Time Stamp (UNIX TIME)






   


    Следующая часть функции Time Stamp. Вариант конвертации в переменную UNIX TIME. Функция достаточно простая и без затей. Добавлена для полноты картины.

Проверялось здесь Unix time конвертер

Первый вариант здесь. Конвертация из UNIX TIME в понятные значения даты и времени.
 
            
            unsigned long Time_Stamp_To_Value (uint16_t *data);

void setup()  {
                Serial.begin (9600);
              }

void loop() {

   uint16_t data[7] ={};
            
            data[0] = 2024;   // год
            data[1] = 3;      // месяц
            data[2] = 7;      // день
            data[3] = 9;      // часы
            data[4] = 0;      // минуты
            data[5] = 0;      // секунды            

  unsigned long time_stamp =  Time_Stamp_To_Value (data);     
   
   Serial.print     ("con : ");
   Serial.println   ("1709802000"); 
   Serial.print     ("rel : ");
   Serial.println   (time_stamp);  
   Serial.println   ("------------------------");  

    delay (15000);
}


  unsigned long Time_Stamp_To_Value (uint16_t *data)
    {           
      unsigned long month_comp = 0x11044C; // переменная, условно, хранящая размер месяцев.
      
           boolean vi_year = false;      // Високосный год          
           uint8_t vi_days=0;            // Високосные дни 
           uint8_t fake_vi=0;            // Лжевисокосные дни 

    // --- Проверка на високосность текущего года
      if  (!(data[0] % 4)) 
           {
             vi_year = true;
             month_comp = 0x110448;
                 
                if (  (!(data[0] % 100)) && (data[0] % 400)  ) // Проверка на лжевисокосность текущего года
                     {                        
                        vi_year = false;
                        month_comp = 0x11044C;
                     }                   
           }           

        // -----Расчет количества дней прошедших с начала текущего года.  -------------
              unsigned int days = 0;
                  int i = (data[1]-1); // Счетчик месяцев. 
                                       // Полных пройденных -1 от текущего.             
        for ( ; i>0; i--)
            {
              days = days + (31 - (month_comp & 0x03));
              month_comp  = month_comp >> 2;                      
            }  
                days = days + (data[2]-1); // Считаем количество полных пройденных дней.
                 

     
     //--- Расчет пройденных лет с начала эпохи UNIX TIME
       unsigned int years = data[0] - 1970;
   

     //-- Расчет високосных дней------- 
        vi_days = (years + 2) / 4;

          if (vi_year)  // Если текущий високосный
             {             
                vi_days--; // В текущем, високосном году не требуется увеличивать vi_days             
             }             // Учет 29 фев. уже пршел при подсчете дней.

             // Расчет лжевисокосных дней            
               i = data[0];             
                             for ( ; i>2099; i--) // Цикл запустится не раньше 2100 года.
                                     {  
                                       if ( (!(i % 100)) && (!(i % 4)) && (i % 400) )
                                              {
                                                  fake_vi++;                                                        
                                              }
                                     }

                  vi_days = vi_days - fake_vi; // Расчет фактического количества високосных дней.                                       
                                          
// ----- Основная формула расчета TIME STAMP ------------------------------------------------
 
 unsigned long value = ((unsigned long) (days*86400)  + ((unsigned long)years*365*86400) + 
                      
                       ((unsigned long)vi_days*86400) + ((unsigned long)data[3]*3600)    + 
                       
                       (data[4]*60) + data[5]);
//------------------------------------------------------------------------------------------  
      return (value);
    }
            
           
            

     

   Функция чтения Time Stamp 07. 03. 2024г. Nord_Air.

  Эта программа является свободным ПО: вы можете распространять и/или модифицировать её согласно условиям Основной Общественной Лицензии GNU, опубликованной Организацией Свободного Программного Обеспечения, 3-ей версии Лицензии, либо любой последующей версией.

   










      Статьи


  
    









   Изготовление рекламы Изготовление мебели  Общестроительные работы 3D моделирование       Статьи
  Благоустройство тер.
   Общее портфолио    Мебель для мастерской   Установка бордюров   Портфолио   Контакты
   Наружняя реклама       Фасадные работы   Модели   Образец договора
   Внутреняя реклама       Утепление гаража   Инфо
   Таблички, наклейки       Косметический ремонт   Фото г.Надым
  Бетонные работы   Фото пригороды г.Надым