儒略历和格里高利历
如果你的程序使用的日期早于切换日期,那么 儒略历 和 格里高利历 之间的区别可能会对你的程序产生影响。
-
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