儒略历和格里高利历¶ ↑
如果你的程序使用了转换日期之前的日期,那么儒略历和格里高利历之间的差异可能对你的程序很重要。
-
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