Rails
创建活动记录并将其插入时,created_at
值实际上与Time.now.utc.to_date
相同吗??
答案 0 :(得分:2)
在大多数情况下是,但这取决于默认的时区配置选项。
def current_time_from_proper_timezone
default_timezone == :utc ? Time.now.utc : Time.now
end
您可以在以下位置进行change时区设置:
config.active_record.time_zone_aware_attributes = false
答案 1 :(得分:0)
如果您的意思是to_datetime
,则不可以,在最坏的情况下,可能要关闭24小时。
如果您的意思是Time.now
,那么我相信它与第二个相同。但是请注意,如果在创建记录之前或之后立即调用DateTime
,则它可能与第二条记录不匹配。我很想知道为什么您需要转换为Post
。
只需自己测试一下(假设您的AR类别为dtm_before = Time.now.to_datetime
post = Post.create!(attributes)
dtm_after = Time.now.to_datetime # zone does not matter!
# these differences should be tiny
dtm_before.to_time - post.created_at
dtm_after.to_time - post.created_at
):
# let's assume your local TZ-offset isn't zero
t = Time.now
t == t.getutc # true
t - t.getutc # 0.0 (these are the exact same instant)
我说过,区域无关紧要,因为在进行时间算术时,会自动考虑区域。示例:
{{1}}