¿Cuál es la mejor manera de convertir entre fecha, horas, minutos, segundos a la marca de tiempo Unix en milisegundos en Arduino? Necesito tener esta conversión, ya que estoy usando RTC (fecha, horas, minutos, segundos, etc.) y comunico la marca de tiempo de Unix a través de BLE
Encontré algunos fragmentos de códigos en línea, pero aún no los he probado exhaustivamente.
  byte second = epoch%60; epoch /= 60;
  byte minute = epoch%60; epoch /= 60;
  byte hour   = epoch%24; epoch /= 24;
  unsigned int years = epoch/(365*4+1)*4; epoch %= 365*4+1;
  unsigned int year;
  for (year=3; year>0; year--)
  {
      if (epoch >= days[year][0])
          break;
  }
  unsigned int month;
  for (month=11; month>0; month--)
  {
      if (epoch >= days[year][month])
          break;
  }
  year  = years+year;
  month = month+1;
  unsigned int day   = epoch - days[year][month]+1;
  unsigned int weekday  = (dayOfMonth += month < 3 ? year-- : year - 2, 23*month/9 + dayOfMonth + 4 + year/4- year/100 + year/400)%7;Y para convertir a la marca de tiempo de Unix:
unsigned long epoch = (((year/4*(365*4+1)+days[year%4][month]+dayOfMonth)*24+hour)*60+minute)*60+second;¿Hay alguna biblioteca en Arduino que implemente esto? Cambiaría la fiabilidad sobre el tamaño del programa.

Hay una forma estándar de hacer esas conversiones en C, que es a través de las funciones definidas en
<time.h>. Esta API es estándar, puede probarla en su computadora. Las versiones recientes de avr-libc admiten esto: consulte time.h en avr-libc . Estas funciones pueden manejar la hora local si proporciona una función que implemente las reglas DST: consulteset_dst(). Se proporcionan ejemplos para las normas de EE. UU. Y la UE.fuente
Aquí hay un ejemplo para convertir segundos (tiempo Unix) a Fecha y hora usando TimeLib.h:
fuente
Cualquier compilador c medio decente tendría un conjunto de tipos y rutinas relacionadas con el tiempo para lidiar con esto. Consulte el manual de su compilador para obtener más detalles.
Por cierto, contrario a la sabiduría convencional, no necesita un etc. para realizar un seguimiento del tiempo. Cualquier buen temporizador anterior más tu código servirá.
fuente