Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 为什么Date类的新实例的默认年份等于-4712?_Ruby - Fatal编程技术网

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

Ruby 为什么Date类的新实例的默认年份等于-4712?,ruby,Ruby,运行: require 'date' y = Date.new puts "default year is #{y.year}" 输出: default year is -4712 日期对象的年份默认为-4712有什么特殊原因吗?我想可能有一个技术(或传统)原因。我在谷歌上搜索了这个,并在Ruby文档(2.2.3)中查找了它,但我看不到原因的答案。公元前4713年1月1日是维基的开始: 朱利安日数(JDN)是指从格林威治标准时间正午开始的朱利安日计数中分配给整个太阳日的整数,朱利安日数0分配

运行:

require 'date'
y = Date.new
puts "default year is #{y.year}"
输出:

default year is -4712

日期对象的年份默认为-4712有什么特殊原因吗?我想可能有一个技术(或传统)原因。我在谷歌上搜索了这个,并在Ruby文档(2.2.3)中查找了它,但我看不到原因的答案。

公元前4713年1月1日是维基的开始:

朱利安日数(JDN)是指从格林威治标准时间正午开始的朱利安日计数中分配给整个太阳日的整数,朱利安日数0分配给从公元前4713年1月1日正午开始的一天(公元前4714年11月24日,公历),三个多年周期开始的日期,早于任何历史日期。例如,2000年1月1日12:00 UT开始的一天的儒略日编号为2451545


这一天的年份是公元前4713年,或者从技术上讲是公元前4712年,正如你所指出的,默认年份是指公元前4713年,我对此一无所知,谢谢。但是为了给出一个更完整的答案,我觉得你需要扩展你所说的技术上的含义。我认为您需要在答案中添加Date类使用的日期,其中包括0年。所以公元前1年变成0年,公元前2年变成1年,公元前3年变成2年,依此类推。因此,公元前4713年成为公元前4712年。