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

Coc*_*oco 3 ruby timezone ruby-on-rails-4

我有一段有价值的时光Wed, 23 Mar 2016 00:07:00 ICT +07:00,当我打电话时to_s,它会返回我"03/23/2016 12:07 AM",但我需要的是"03/23/2016 07:07 AM"

感谢带有解释的答案。

mu *_*ort 5

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

您似乎还想将时间转换为 UTC,但也有一个方法:utc

将它们放在一起:

t.utc.strftime('%m/%d/%Y %H:%M %p')
Run Code Online (Sandbox Code Playgroud)

除了调试之外,您确实不应该使用to_sor on 时间进行任何其他操作。inspect你最好直接去,strftime这样你就能得到你想要的格式。