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

日期的星期数和两个日期之间相差天数_第1张图片

一、日期的特征数公式

如果日期是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

你可能感兴趣的:(日期的星期数和两个日期之间相差天数)