【发布时间】:2012-12-02 09:17:38
【问题描述】:
我正在制作一个日历程序。 “扩展重复事件”代码给我带来了无穷无尽的麻烦。我通过使用 mktime() 来扩展事件以获取“纯”时间值,然后将重复增量(在本例中为 604800 秒或 7 天)添加到它。然后使用 localtime() 来获取日历结构。
发生这种情况:
原始事件:9 月 10 日
{tm_sec = 0, tm_min = 0, tm_hour = 16, tm_mday = 10, tm_mon = 9,
tm_year = 2012, tm_wday = 4, tm_yday = 283, tm_isdst = 0,
tm_gmtoff = -25200, tm_zone = 0x608ff0 "PDT"}
第一次重复:9 月 17 日
{tm_sec = 0, tm_min = 0, tm_hour = 17, tm_mday = 17, tm_mon = 9,
tm_year = 2012, tm_wday = 4, tm_yday = 290, tm_isdst = 1,
tm_gmtoff = -25200, tm_zone = 0x608ff0 "PDT"}
第二次重复:9 月 24 日
{tm_sec = 0, tm_min = 0, tm_hour = 16, tm_mday = 24, tm_mon = 9,
tm_year = 2012, tm_wday = 4, tm_yday = 297, tm_isdst = 0,
tm_gmtoff = -25200, tm_zone = 0x608ff0 "PDT"}
第三次重复:9 月 31 日?!
{tm_sec = 0, tm_min = 0, tm_hour = 16, tm_mday = 31, tm_mon = 9,
tm_year = 2012, tm_wday = 4, tm_yday = 304, tm_isdst = 0,
tm_gmtoff = -25200, tm_zone = 0x608ff0 "PDT"}
有人知道这里发生了什么吗?我需要自己填写localtime()吗?
【问题讨论】:
-
请记住,
tm_year是自 1900 年以来的年数。所以如果你想要 2012 年(今年),它应该是 112。 -
"...不是编译器错误..."(注意:这次我没有投反对票 - 这是一个容易犯的错误,我敢肯定我也会这样做...)
标签: c datetime mktime localtime