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 ++中的日期/時間功能。
添加回答
舉報