首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails:获取时区中的#beginning_of_day

Rails:获取时区中的#beginning_of_day
EN

Stack Overflow用户
提问于 2011-03-24 20:33:12
回答 7查看 34.5K关注 0票数 26

我为rails应用程序设置了一个默认时区。和Date对象的一个实例。

如何让make Date#beginning_of_day返回指定时区中一天的开始,而不是我当地的时区。

有没有其他方法可以在指定的时区中获取给定日期的开始时间?

date = Date.new(2014,10,29)

zone = ActiveSupport::TimeZone.new('CET')
date.foo(zone) # should return "Wed, 29 Oct 2014 00:00:00 CET +01:00"

zone = ActiveSupport::TimeZone.new('UTC')
date.foo(zone) # should return "Wed, 29 Oct 2014 00:00:00 UTC +00:00"
EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2011-03-24 21:23:53

票数 20
EN

Stack Overflow用户

发布于 2011-09-21 14:58:20

DateTime.now.in_time_zone(Time.zone).beginning_of_day
票数 47
EN

Stack Overflow用户

发布于 2011-03-24 20:54:55

Date#beginning_of_day将始终返回00:00。

但据我所知,你想知道其他时区的时间,而在当前时区是一天的开始。

所以。让我们来看看你现在所在的地方一天的开始。想象这里是法国的巴黎:

bd = DateTime.now.in_time_zone('Paris').beginning_of_day
# or just
bd = DateTime.now.in_time_zone(1).beginning_of_day
#=> Thu, 24 Mar 2011 00:00:00 WET +01:00

现在让我们来看看莫斯科的时间是什么:

moscow_time = bd.in_time_zone("Moscow") # or in_time_zone(3)
#=> Thu, 24 Mar 2011 02:00:00 AST +03:00
london_time = bd.in_time_zone("London")
#=> Wed, 23 Mar 2011 23:00:00 GMT +00:00
kyiv_time = bd.in_time_zone("Kyiv")
#=> Thu, 24 Mar 2011 01:00:00 EET +02:00 

对于不同的form now日期:

# You even shouldn't call now, because it by default will be 00:00
date = DateTime(2011, 1, 3).in_time_zone("-10")
# or
date = DateTime.new(2011,1,3,0,0,0,"-10")
# and same way as above
moscow_time = date.in_time_zone("Moscow") # or in_time_zone(3)

并将Date转换为DateTime

date = Date.new(2011,1,3).to_datetime.change(:offset => "EST")
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5419148

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档