日期的星期数和两个日期之间相差天数

一、日期的特征数公式

如果日期是1900年3月1日及之后,年月日分别是year,month,day,则:

N = 1461 x f(year, month) / 4 + 153 x g(month) / 5 + day

其中:

如果month<=2,则 f(year, month) = year - 1

如果month>2,则 f(year, month) = year

如果month<=2,则 g(month) = month + 13

如果month>2,则  g(month) = month + 1

如果日期是1800年3月1日至1900年2月28日,则N为上面结果加1

如果日期是1700年3月1日至1800年2月28日,则N为上面结果加2

二、用特征数求某日的星期数

将其特征数减去621,049,再除7的余数,就是星期数,其中0为星期日,1为星期一,余类推。

例如2004.8.8,则

N = 1461 x f(2004, 8) / 4 + 153 x g(8) / 5 + 3

= (1461 x 2004) / 4 + (153 x 9) / 5 + 3

= 2,927,844 / 4 + 1,377 / 5 + 3

= 731,961 + 275 + 3

= 732,239

732,239-621,049=111,190

除7余2,所以这一天是星期二。

三、用特征数求两天之间的天数

将两天的特征数相减,就是它们相差的天数。

如:2005.2.22与2004.8.8

则:

N1 = 1461 x f(2004, 8) / 4 + 153 x g(8) / 5 + 3

= (1461 x 2004) / 4 + (153 x 9) / 5 + 3

= 2,927,844 / 4 + 1,377 / 5 + 3

= 731,961 + 275 + 3

= 732,239

N2 = 1461 x f(2005, 2) / 4 + 153 x g(2) / 5 + 21

= (1461 x 2004) / 4 + (153 x 15) / 5 + 21

= 2,927,844 / 4 + 2295 / 5 + 21

= 731,961 + 459 + 21

= 732,441

相差天数 = N2 - N1

= 732,441 – 732,239

= 202

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,778评论 18 399
  • 自从26号中午过后,身体就出现了异样,刚开始是鼻水不停的流,擦完鼻水,过了几秒钟又流,就像无法关紧的水龙头,所以只...
    畅小妹阅读 205评论 0 0
  • 许多人读过格拉德维尔的《引爆点》,但不知道有多少人仔细阅读过书中的”后记“部分。多年后,笔者偶然翻开此书时,才留意...
    自由蓝阅读 271评论 0 0
  • handlebar's reference Basic Usage 最简单的handlebars语句是简单的标识符...
    drunkcat2020阅读 181评论 0 0
  • 突然想写点东西了!!! 不知道为什么近期一直想起来小学老师说我以后可能会成为一个小说家的事,莫名的觉得有些好笑,却...
    只愿伊芙阅读 278评论 1 0