将Time.at(ts).in_time_zone(time_zone)转换为字符串时丢失信息

时间:2015-03-31 19:11:04

标签: ruby-on-rails ruby activerecord time

在将特定时区的时间转换为字符串时,我正在丢失一些我需要的信息。

示例:

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

2 个答案:

答案 0 :(得分:1)

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

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

但我不确定区域%z!

答案 1 :(得分:0)

这有效:

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