儒略历和格里高利历¶ ↑
如果你的程序使用切换日期之前的日期,那么儒略历和格里高利历之间的差异可能会对你的程序产生影响。
-
1582年10月15日。
-
1752年9月14日。
一般来说,在两种日历中,日期会有所不同。
不同的切换日期¶ ↑
造成差异的原因是宗教/政治历史。
-
1582年10月15日,一些国家从儒略历改为格里高利历;这些国家包括意大利、波兰、葡萄牙和西班牙。西方世界的其他国家则保留了儒略历。
-
1752年9月14日,大多数英帝国从儒略历改为格里高利历。
当你的代码使用这些切换日期之前的日期时,它是否将切换日期视为较早的日期或较晚的日期(或两者都不是)将很重要。
另请参阅此处的具体示例。
参数 start
¶ ↑
Date 类中的某些方法通过接受一个可选参数 start
来处理儒略历和格里高利历的差异,该参数的值可能是
-
Date::ITALY(默认值):如果创建的日期在 1582 年 10 月 15 日之前,则为儒略历,否则为格里高利历
d = Date.new(1582, 10, 15) d.prev_day.julian? # => true d.julian? # => false d.gregorian? # => true
-
Date::ENGLAND:如果创建的日期在 1752 年 9 月 14 日之前,则为儒略历,否则为格里高利历
d = Date.new(1752, 9, 14, Date::ENGLAND) d.prev_day.julian? # => true d.julian? # => false d.gregorian? # => true
-
Date::JULIAN:无论其值如何,创建的日期均为儒略历
d = Date.new(1582, 10, 15, Date::JULIAN) d.julian? # => true
-
Date::GREGORIAN:无论其值如何,创建的日期均为格里高利历
d = Date.new(1752, 9, 14, Date::GREGORIAN) d.prev_day.gregorian? # => true