【问题标题】:Convert Time to String in User Time Zone in Ruby在 Ruby 中将用户时区中的时间转换为字符串
【发布时间】:2016-07-05 23:54:37
【问题描述】:

我有一个值Wed, 23 Mar 2016 00:07:00 ICT +07:00的时间,当调用to_s时,它返回我"03/23/2016 12:07 AM",但我需要的是"03/23/2016 07:07 AM"

感谢解释的答案。

【问题讨论】:

  • 它是Object::Time 还是Object::Date::DateTime 变量?
  • @DoubleV 它是ActiveSupport::TimeWithZone 对象,这是来自 ActiveRecord 的属性。
  • 实际上,Rails 已经完成了所有工作,但是我从客户端解析了错误的日期时间格式,我的错。

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


【解决方案1】:

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

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

把它们放在一起:

t.utc.strftime('%m/%d/%Y %H:%M %p')

您真的不应该在除调试之外的任何时间使用to_sinspect。你最好直接去strftime,这样你就可以得到你想要的格式。

【讨论】:

    【解决方案2】:

    我想这会起作用:

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

    【讨论】:

    • @Frozenna 认为这个link 会帮助你。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-10
    • 1970-01-01
    • 1970-01-01
    • 2015-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多