Lo que quiero hacer es convertir un tiempo de época (segundos desde la medianoche del 1/1/1970) al tiempo "real" (m/d/yh: m: s)Conversión del tiempo de época a "fecha/hora" real
hasta ahora, tengo el siguiente algoritmo, lo que a mí se siente un poco feo:
void DateTime::splitTicks(time_t time) {
seconds = time % 60;
time /= 60;
minutes = time % 60;
time /= 60;
hours = time % 24;
time /= 24;
year = DateTime::reduceDaysToYear(time);
month = DateTime::reduceDaysToMonths(time,year);
day = int(time);
}
int DateTime::reduceDaysToYear(time_t &days) {
int year;
for (year=1970;days>daysInYear(year);year++) {
days -= daysInYear(year);
}
return year;
}
int DateTime::reduceDaysToMonths(time_t &days,int year) {
int month;
for (month=0;days>daysInMonth(month,year);month++)
days -= daysInMonth(month,year);
return month;
}
se puede asumir que los miembros seconds
, minutes
, hours
, month
, day
y year
toda existen.
Usando los bucles for
para modificar el tiempo original se siente un poco apagado, y me preguntaba si hay una solución "mejor" para esto.
OK, entonces sé que está buscando una solución de procedimiento ... pero si aún no lo ha visto, visite http://www.epochconverter.com. Es una forma muy útil de verificar tu trabajo :) – Tom
¿Qué hay de malo con solo llamar a esta funcionalidad expuesta por 'time.h', p. por [gmtime] (http: //www.cplusplus.com/reference/clibrary/ctime/gmtime /) si GMT en lugar de una zona horaria específica es lo que buscas? –
No tiene nada de malo, ni siquiera sabía que existía. ¡Gracias! Pero, todavía estoy interesado en saber cómo mi implementación podría ser mejor. –