【问题标题】:Rails time in the past in a given timezone - not in utc给定时区过去的 Rails 时间 - 不是 UTC
【发布时间】:2018-09-29 20:30:47
【问题描述】:

让我们考虑以下日期:4 dec, 2017 10:00AM

DateTime.parse("4 dec, 2017 10:00AM") 以 UTC 格式返回时间。 我想在时间为10:00AM的时区"Asia/Beirut"中获取DateTime

问题在于现在 (UTC+3) 和十二月 (UTC + 2) 之间的 UTC 时区不同。

简而言之,给定4 dec, 2017 10:00AM,我想得到一个DateTime,其值为:4 dec, 2017 10:00AM UTC+2

有没有我在文档中遗漏的方法?

编辑 这是它在 Javascript 中的样子

new Date(2017, 10, 12)
Sun Nov 12 2017 00:00:00 GMT+0200 (EET)
new Date(2017, 9, 12)
Thu Oct 12 2017 00:00:00 GMT+0300 (EEST)

【问题讨论】:

    标签: ruby-on-rails ruby datetime ruby-on-rails-4 time


    【解决方案1】:

    您可以使用带区域的时间并解析该时间的日期

    Time.zone = 'Asia/Beirut'
    Time.zone.parse("4 dec, 2017 10:00AM")
    
    Mon, 04 Dec 2017 10:00:00 EET +02:00 
    

    【讨论】:

    • 有趣的方式 (+1) - 不确定 Time.zone 的线程含义
    【解决方案2】:

    答案来自String 类 根据https://stackoverflow.com/a/41001934/226255

    "4 dec, 2017 10:00AM".in_time_zone("Asia/Beirut")

    返回我正在寻找的内容

    Mon, 04 Dec 2017 10:00:00 EET +02:00

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-05
      • 1970-01-01
      • 2020-11-24
      • 2011-09-25
      • 2016-09-05
      • 2020-02-06
      • 2010-09-27
      相关资源
      最近更新 更多