为什么Date类的新实例的默认年份等于-4712?

Sag*_*dya 6 ruby

运行:

require 'date'
y = Date.new
puts "default year is #{y.year}"
Run Code Online (Sandbox Code Playgroud)

输出:

default year is -4712
Run Code Online (Sandbox Code Playgroud)

Date对象的年份默认为-4712有什么特别的原因吗?我想也许有一个技术(或传统)的原因.我用Google搜索这一点,看它的Ruby文档(2.2.3)上,我不能看到一个答案,为什么.

Yu *_*Hao 6

公元前4713年1月1日是朱利安日的开始,来自维基:

儒略日数(JDN)是从中午格林威治时间开始在儒略日计数分配到整个太阳系一天的整数,分配到天儒略日数0 1月1日,公元前4713,proleptic儒略历开始于中午(公元前4714年11月24日,在公历中的格里高利历),这是一个开始三个多年周期并且在任何历史日期之前的日期.例如,2000年1月1日12:00 UT开始的当天的朱利安日数为2,451,545.

这一天的年份是公元前4713年,或技术上-4712.