3 回答
TA贡献1810条经验 获得超4个赞
伪代码:
int julian = getDayOfYear(myDate) // Jan 1 = 1, Jan 2 = 2, etc...
int dow = getDayOfWeek(myDate) // Sun = 0, Mon = 1, etc...
int dowJan1 = getDayOfWeek("1/1/" + thisYear) // find out first of year's day
// int badWeekNum = (julian / 7) + 1 // Get our week# (wrong! Don't use this)
int weekNum = ((julian + 6) / 7) // probably better. CHECK THIS LINE. (See comments.)
if (dow < dowJan1) // adjust for being after Saturday of week #1
++weekNum;
return (weekNum)
为了明确起见,此算法假定您按如下方式计算周数:
S M T W R F S
1 2 3 <-- week #1
4 5 6 7 8 9 10 <-- week #2
[etc.]
getDayOfWeek()和getDayOfYear()是大多数语言中的标准日期对象操作。如果您没有它们,可以在查明星期几之后,从某个已知的日期算起(1970年1月1日是常见的日期)。
如果要实现自己的日期计数例程,请记住,可以被100整除的年份不是 leap年,除非它们也可以被400整除。因此1900不是year年,而2000是leap年。如果您要回到较早的时间工作,则必须弄乱公历日历和朱利安日历等,请参阅Wikipedia上的大量信息。
该链接更详细地讨论了Windows / C ++中的日期/时间功能。
添加回答
举报