我尝试将Active Support时区原始格式转换为字符串。我想将它存储在一个字符数组中,然后分别解析每个所需的数据。
Time.zone = current_user.timezone
date_and_time = Time.zone.now
现在
date_and_time = Thu, 21 Apr 2016 20:58:04 PDT -07:00
Ruby方法(to_s)不会转换它。我找到了将其转换为其他方法,但是所有这些方法都只会将格式更改为数字,我希望这一天保持不变,因为我会将其存储在变量中,然后在不同的方法中使用它。
答案 0 :(得分:3)
您可以使用.to_formatted_s(DATE_FORMAT)
。
time = Time.now # => Thu Jan 18 06:10:17 CST 2007
time.to_formatted_s(:db) # => "2007-01-18 06:10:17"
time.to_formatted_s(:long) # => "January 18, 2007 06:10"
time.to_formatted_s(:long_ordinal) # => "January 18th, 2007 06:10"
time.to_formatted_s(:rfc822) # => "Thu, 18 Jan 2007 06:10:17 -0600"
time.to_formatted_s(:iso8601) # => "2007-01-18T06:10:17-06:00"
可在此处找到所有DATE_FORMATS列表以及更多信息: http://api.rubyonrails.org/classes/Time.html#method-i-to_formatted_s
答案 1 :(得分:1)
答案 2 :(得分:1)
你应该得到你想要的东西:
date_and_time.strftime("%a %d %b %Y %H:%M:%S UTC %:z")
有关详细信息,请参阅strftime Docs
<强>解释强>
硬编码UTC的原因是根据文档
%z - Time zone as hour and minute offset from UTC
所以我认为它应该始终是UTC。