如何在整个rails应用程序中将时区设置为EST



我想在整个应用程序中使用EST。我已经设置了

config.time_zone = 'Eastern Time (US & Canada)'
config.active_record.default_timezone = 'Eastern Time (US & Canada)'

我想要的是,我需要得到所有我用过的时间比如"DateTime.now"它现在返回的时间是我的本地时区但我想要它返回的日期时间是EST,我还有日期时间范围选择器我得到开始日期和结束日期并使用

将字符串解析为时间
(params[:start_date]).to_time

它还返回本地区域的日期时间,而不是我希望所有这些都在EST中返回。我怎么能做到这一点?如有任何帮助,不胜感激。

DateTime.nowTime.now不尊重Time.zone,总是使用服务器时间。如果您正在使用的机器被设置为不同的时区,这两个将使用该时区。

另一方面,

to_time默认为apidock中提到的本地时区(尽管刚刚尝试过,我默认得到utc)。要在时区集中获得这些时间,请附加in_time_zone

DateTime.now.in_time_zone
Time.now.in_time_zone
string.to_time.in_time_zone

有一些快捷方式。下面的代码将返回当前时区

中的时间戳
Time.zone.now
Time.zone.parse(string)

通常情况下,在数据库日期时间将保存在UTC格式,除非你已经选择了一个特定的时区活动记录,它会更容易,如果你必须干预多个时区。但是,当您访问这些值时,您将获得所选TimeZone中的值。

config.time_zone = 'Eastern Time (US & Canada)

现在,假设你有一个UTC格式的datetime值作为

datetime1 = "2014-08-25 10:25:57 +0000"

您可以将其转换为选定的时区'Eastern Time (US & Canada)',如下所示,

Time.zone.parse(datetime1) => Mon, 25 Aug 2014 06:25:57 EDT -04:00

然后,如果你需要一个合适的格式,使用strftime方法。

Time.zone.parse("2014-08-25 10:25:57 +0000").strftime("%d-%m-%Y %H:%M:%S") => "25-08-2014 06:25:57"

希望能有所帮助:)

相关内容

  • 没有找到相关文章

最新更新