ruby-on-rails - Rails 猴子修补不适用于 TimeWithZone 对象
问题描述
我里面有这个 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 小时,如何解决这个问题?
解决方案
推荐阅读
- vue.js - 不能听父母发出孩子
- php - NelmioApiDocBundle 的渲染问题
- powershell - 查询空值时在powershell中调用MethodOnNull
- excel - Countif 用于 Excel 中的唯一组合
- java - 使用正则表达式检测字符串中的反斜杠字符的代码不起作用?
- python - 即使是简单的请求(例如 .head()),Pandas 也会运行缓慢
- cmake - 如何使用 C++/WinRT 手动创建 Windows 运行时组件?
- python - 使用 Python 基于多个键对 JSON 进行分组
- java - 使用 void 方法的 doNothing 方法时出现 UnfinishedStubbingException
- javascript - 使用 async await 与 map 保持一致性