C:根據日期判斷是一年的第幾天、星期幾


 

 W = [Y-1] + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D

  Y是年份數,D是這一天在這一年中的累積天數,也就是這一天在這一年中是第幾天。

  最好用的是蔡勒公式:

  W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1

  C是世紀數減一,y是年份后兩位,M是月份,d是日數。1月和2月要按上一年的13月和
  14月來算,這時C和y均按上一年取值。

  兩個公式中的[...]均指只取計算結果的整數部分。算出來的W除以7,余數是幾就
  是星期幾。如果余數是0,則為星期日。
  我們知道,公歷的平年是365天,閏年是366天。置閏的方法是能被4整除的年份在
  2月加一天,但能被100整除的不閏,能被400整除的又閏。因此,像1600、2000、2400
  年都是閏年,而1700、1800、1900、2100年都是平年。公元前1年,按公歷也是閏年。

  因此,對於從公元前1年(或公元0年)12月31日到某一日子的年份Y之間的所有整年
  中的閏年數,就等於

  [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400],

  [...]表示只取整數部分。第一項表示需要加上被4整除的年份數,第二項表示需要去掉
  被100整除的年份數,第三項表示需要再加上被400整除的年份數。之所以Y要減一,這
  樣,我們就得到了第一個計算某一天是星期幾的公式:

  W = (Y-1)*365 + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D. (1)

  其中D是這個日子在這一年中的累積天數。算出來的W就是公元前1年(或公元0年)12月
  31日到這一天之間的間隔日數。把W用7除,余數是幾,這一天就是星期幾。比如我們來
  算2004年5月1日:

  W = (2004-1)*365 + [(2004-1)/4] - [(2004-1)/100] + [(2004-1)/400] +
  (31+29+31+30+1)
  = 731702,

  731702 / 7 = 104528……6,余數為六,說明這一天是星期六。這和事實是符合的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM