• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C:根据日期判断是一年的第几天、星期几

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

 

 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,余数为六,说明这一天是星期六。这和事实是符合的。

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
errorc2129:静态函数已声明但未定义发布时间:2022-07-14
下一篇:
最近在读一本好书ExpertC#2005BusinessObjects中文版第2版发布时间:2022-07-14
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap