首页 > 解决方案 > Time.new 和 Date.new .strftime("%A") 为相同的参数返回不同的日期

问题描述

解决不幸的日子,我遇到了:

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

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

这是为什么?

在此处输入图像描述

标签: ruby

解决方案


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


推荐阅读