【问题标题】:Losing information while converting Time.at(ts).in_time_zone(time_zone) to string将 Time.at(ts).in_time_zone(time_zone) 转换为字符串时丢失信息
【发布时间】:2015-06-05 06:16:16
【问题描述】:

在将某个时区的时间转换为字符串时,我丢失了一些我需要的信息。

例子:

ts = Time.now.to_i
time_zone = "America/Los_Angeles"
time = Time.now.in_time_zone(time_zone)
time_string = time.to_s

输出:

time 
#=> Tue, 31 Mar 2015 12:05:03 PDT -07:00
time_string 
#=> "2015-03-31 12:05:03 -0700"

如何让时间字符串等于Tue, 31 Mar 2015 12:05:03 PDT -07:00

【问题讨论】:

  • Checkout Time#strftime 使用这个你可以格式化你认为合适的字符串。
  • 您应该添加一个 ActiceSupport 或 Rails 标签。这可能会提示其他答案。
  • 没有 Rails 或 ActiveSupport 标签,隐含的假设是您想要一个纯 Ruby 解决方案。但是,您的示例向了解 Rails 的人表明您愿意接受使用 ActiveSupport 方法的解决方案。这就是您需要 ActiveSupport 或 Rails 标签的原因。此外,只查看带有 ActiveSupport 或 Rails 标签的问题的读者可能会跳过您的问题。

标签: ruby-on-rails ruby activerecord time


【解决方案1】:

正如engineersmnky所说,strftime是你的朋友:

time_string = time_string.to_time.strftime("%a, %d %b %Y %H:%M:%S PDT %z")

但我不太确定区域 %z!

【讨论】:

    【解决方案2】:

    这行得通:

    Time.now.in_time_zone(time_zone).strftime("%a, %d %b %Y %H:%M:%S %Z")
    "Tue, 31 Mar 2015 12:59:25 PDT" 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多