Time.new和Date.new .strftime(“%A”)对于相同的参数返回不同的日期

时间:2018-08-21 19:54:46

标签: ruby

解决Unlucky Days,我遇到了,

require 'date'
Time.new(1001,1,1).strftime("%A") # => Thursday
Date.new(1001,1,1).strftime("%A") # => Wednesday

不是同一天。正确的(iGoogled)是Time

那是为什么?

enter image description here

1 个答案:

答案 0 :(得分:4)

Date默认使用儒略历。当您处理过去的日期时,在进行日历改革之前您将获得怪异的行为。

irb(main):013:0> Time.new(1001,1,1).strftime("%A")
=> "Thursday"
irb(main):014:0> Date.new(1001,1,1, Date::GREGORIAN).strftime("%A")
=> "Thursday"

此处有更多详细信息: https://gist.github.com/pixeltrix/e2298822dd89d854444b