具有纪元时间和天数月的算法.... C ++

时间:2013-03-14 16:55:44

标签: c++ datetime epoch

嘿伙计,所以我试图用纪元时间创建一个时间戳。到目前为止,小时分钟秒和毫秒都没有问题。然而,我正处在如何处理数月和数小时的十字路口。首先,有2个问题。每个月的天数各不相同,没有一致的模式和处理闰年的问题。我一直在努力实现一个合适的系统。我想我可以走条件路线,但也许我可以实现某种表格(教师给出的提示。

到目前为止,如果有人感兴趣的话,这是我最多几个小时的算法。

28 ExpandedTime* localTime(struct timeval* tv, ExpandedTime* etime)
 29 {
 30     tzset();                                    // Corrects timezone
 31
 32     int epochT = (tv->tv_sec) - timezone;       // Epoch seconds with
 33     int epochUT = tv->tv_usec;                  // Timezone correction
 34
 35     int seconds = epochT % 60;
 36     epochT /= 60;
 37     etime->et_sec = seconds;
 38     etime->et_usec = epochUT;
 39
 40     int minutes = epochT % 60;
 41     epochT /= 60;
 42     etime->et_min = minutes;
 43
 44     int hours = (epochT % 24) + daylight;       // Hours with DST correction
 45     epochT /= 24;
 46     etime->et_hour = hours;
 47
 48
 49     printf("%d,%d,%d\n", seconds, minutes, hours);
 50     printf("%d\n", epochUT);
 51     printf("%d\n", timezone);
 52     printf("%d\n", daylight);
 53     return etime;
 54
 55 }
 56
 57 char* formatTime(struct timeval* tv, char* buf, size_t len)
 58 {
 59
 60 struct ExpandedTime etime2;
 61 localTime(tv, &etime2);
 62 snprintf();
 63 }

它未完成我目前只是坚持如何实施数月的日子。如果有人能够引导我朝着正确的方向前进,那将非常感激。

1 个答案:

答案 0 :(得分:0)

将Unix纪元日期(1/1/1970 00:00)转换为等效的Julian日期,将时间从秒转换为天,并将结果添加到纪元的Julian日期。这将为您提供所需时间的Julian日期。最后,将Julian日期转换回日期和时间。

您可以找到适当的公式,以便在网络上与朱利安日期进行转换。