在Ruby中将时间转换为用户时区中的字符串

时间:2016-03-19 04:15:10

标签: ruby ruby-on-rails-4 timezone

我有时间值Wed, 23 Mar 2016 00:07:00 ICT +07:00,在致电to_s时,它会返回"03/23/2016 12:07 AM",但我需要的是"03/23/2016 07:07 AM"

通过解释欣赏答案。

2 个答案:

答案 0 :(得分:2)

我想这会奏效:

(t + (7*60*60)).to_s其中tTime的实例。

答案 1 :(得分:2)

如果您需要特定格式的时间,则应该到达strftime。您想要的格式字符串是'%m/%d/%Y %H:%M %p',我上面链接的手册解释了所有格式说明符的含义。 Ruby或Rails中的任何时间都会有一个匹配strftime的{​​{1}}方法,所以如果你有一个Time#strftime,{{1}这并不重要},Time,...

您似乎也希望将时间转换为UTC,但也有一种方法:utc

把它们放在一起:

DateTime

除了调试之外,你不应该在时间上使用ActiveSupport::TimeWithZonet.utc.strftime('%m/%d/%Y %H:%M %p') 。您最好直接转到to_s,这样您就可以获得完全符合您的格式。