【问题标题】:Output time with custom format (GMT instead UTC)自定义格式的输出时间(GMT 而不是 UTC)
【发布时间】:2011-12-26 22:59:56
【问题描述】:

我想知道如何使用 ruby​​ 1.9.2 以这种格式获取时间: 我正在使用 rails 3.1 可能需要设置一些环境常量才能使用 to_s 方法使其开箱即用?

2011-11-11 15:20:01 GMT+4

改为

Time.now.to_s # => "2011-11-11 15:20:01 +0400"

【问题讨论】:

  • 我不知道你在说什么,因为 UTC 和 GMT 基本相同,你能澄清一下吗?
  • 我猜“GMT”对于来自欧洲的许多人来说感觉更自然。我是使用“GMT”长大的。 UTC 感觉更科学/技术,尽管将其用作偏移的参考点时更正确。
  • 我为外部服务准备 xml,他们需要这种格式……我知道 UTC 和 GMT 基本相同……我将数据导出到 xml……

标签: ruby utc gmt


【解决方案1】:
class Time
  def to_gmt
    z = gmtoff / 3600
    strftime("%F %T GMT#{:+ if z>=0}#{z}")
  end
end

puts Time.now.to_gmt
#=> 2011-11-11 06:43:59 GMT-7

【讨论】:

  • 不错!我应该把这个文件(time.rb)放在哪里来应用这个monkey_patch?
  • 我将此文件放入初始化程序,现在一切都按预期工作。谢谢
  • 这个答案是错误的:边缘情况:"2011-11-11 15:20:01 +1000" => "2011-11-11 15:20:01 GMT+1"
【解决方案2】:
Time.now.strftime("%D %T GMT%z")\
  .gsub(/GMT([-\+]\d\d\d\d)/){"GMT#{sprintf("%+d",$1.to_i/100)}"}

【讨论】:

  • 这里的日期和时区格式与OP要求的不完全匹配。
  • 您的代码生成“2011-11-11 17:45:31 GMT+0400”,但我需要“2011-11-11 17:45:31 GMT+4”
  • 对我来说,Time.now.strftime('%D') 返回 "11/11/11",而不是所需的 "2011-11-11"
猜你喜欢
  • 2021-11-12
  • 2011-03-28
  • 2012-02-22
  • 1970-01-01
  • 2022-09-29
  • 2011-01-22
  • 2012-02-14
  • 2017-04-15
相关资源
最近更新 更多