我里面有这个 Time 类扩展lib/core_extensions/time/formatter.rb
module CoreExtensions
module Time
module Formatter
def to_formatted_utc
puts({a: self.utc, b: utc})
utc.strftime("%H:%M")
end
def to_formatted_tz
in_time_zone.strftime("%H:%M")
end
end
end
end
我不知道为什么,它没有达到我的预期,
# Expected results is return 15:51
Time.zone.now # => Sat, 13 Mar 2021 22:51:29.217722286 +07 +07:00
Time.zone.now.utc # => 2021-03-13 15:51:29.217722286 UTC
Time.zone.now.utc.strftime("%H:%M") # => 15:51
# Actual results when using to_formatted_utc
Time.zone.now.to_formatted_utc # => 22:51
所以我尝试使用它来调试它byebug
,我发现它utc
并没有将时区更改为 UTC 格式,所以它保持 +07:00
格式不变,但是当我尝试使用它时,Time.zone.now.to_formatted_tz
它又增加了 7 个小时。但它不应该那样做,好像我试过这样做
Time.zone.now.in_time_zone # it stays to +07:00, and the hours didn't changed
为什么会这样?以及如何使它像我预期的那样工作?
谢谢
红宝石版本:3.0.0
RoR 版本:6.1.1
编辑:
刚刚发现当我尝试在方法内部通过调试并执行时self
它表明了这一点
Time.zone.now # => Sat, 13 Mar 2021 22:51:29.217722286 +07 +07:00
Time.zone.now.to_formatted_utc # => 2021-03-13 22:51:29.217722286 UTC
所以+07:00
格式更改为UTC
但不减去 7 小时,如何解决这个问题?