加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby将UTC转换为用户的时区

发布时间:2020-12-17 03:55:32 所属栏目:百科 来源:网络整理
导读:我有dstring保存在UTC中.虽然我有用户的时区偏移标准偏移量 我希望在转换后在用户的时区显示该日期.所以这就是我所做的,但最后你可以看到它显示UTC而不是PST或PDT [64] pry dstring = "2013-10-31T23:10:50Z" [65] pry standard_offset = -8 = -8 [66] pry e
我有dstring保存在UTC中.虽然我有用户的时区偏移标准偏移量
我希望在转换后在用户的时区显示该日期.所以这就是我所做的,但最后你可以看到它显示UTC而不是PST或PDT

[64] pry> dstring
  => "2013-10-31T23:10:50Z"
  [65] pry> standard_offset = -8
  => -8
  [66] pry> e = Time.parse(dstring) + (standard_offset * 3600)
  => 2013-10-31 15:10:50 UTC
  [67] pry> e.strftime("%m/%m/%Y %I:%M %p %Z")
  => "10/10/2013 03:10 PM UTC"

我期望最终得到10/10/2013 03:10 PM PST如何获得?注意:这不是rails应用程序.

解决方法

我在Time类中添加了一个方法in_timezone方法,如下所示:

class Time
   require 'tzinfo'
   # tzstring e.g. 'America/Los_Angeles'
   def in_timezone tzstring
     tz = TZInfo::Timezone.get tzstring
     p = tz.period_for_utc self
     e = self + p.utc_offset
     "#{e.strftime("%m/%d/%Y %I:%M %p")} #{p.zone_identifier}"
   end
 end

如何使用它:

t = Time.parse("2013-11-01T21:19:00Z")  
t.in_timezone 'America/Los_Angeles'

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读