2017年年中是几月?
这个问题有点让人摸不着头脑,不过我尽量解释清楚。 首先,计算机的日期和时间通常由一个称为系统日历的时间库来控制,这个组件在Windows中叫做Calendar。它根据公历存储一年中的天数和日期,以及每月的第一天是一号还是三号之类的信息。这些数据由系统初始化时设置并保存在注册表中。然后,当需要显示日期或者计算日期差分时,从这个时间源获取所需的数据。
因为系统是从二月开始的(所以一月的大多数日子都被删除了),并且一年中大约有一天的误差是允许的,因此使用闰年(每年366天)和两个世纪(每个世纪36524天)可以简单地把误差抹平。 但是Internet上有很多信息是按公历年份排序的,比如新闻网站上的旧闻或已故音乐家的作品。这时会出现问题,因为这些信息不应该按照闰年进行调整。一种简单的解决方案是将年份除以四,得出一个商数,然后将此商数添加到年份前,所得的结果就是按闰年调整后的有效年份(例如2017/4=504,那么2017年就变成了201704)。这当然会带来一些奇怪的问题,例如1999年被加上了三个零成了1999000,而二十世纪的年份则少了几个零。
然而这种简单粗暴的方法有个缺陷,那就是不能分辨上下两百年的年份是否相同。如果相同,则无效。例如1819年和2019年都是一百年,但是前面加了多个零,变得无法比较;又如1976年到2006年这三十年的年份被去掉了多个零,使得它们变成了同一个世纪的不同年份。这两种情况的出现都会导致错误。更准确的方法是将公元后的一百年分成十个十年,把每一个十年作为一组进行比较。如果十年内的年份不同,那么它们的差异就是准确的,否则就需要进一步划分。这种方法能较准确地处理公元后两千年内出现的各种复杂情况,包括闰年、闰月和世纪。