2011-11-11 10 views
1

ruby​​ 1.9.2を使用して正確にこの形式で時間を取得する方法がわかりました: 私はレールを使用しています3.1はいくつかの環境定数を設定する必要がありますto_sメソッドを使ったボックス?カスタム形式の出力時間(GMTではなくUTC)

2011-11-11午後3時20分01秒GMT + 4

代わり

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

私は正確にあなたがUTC以来、になっているかわかりませんGMTは基本的に同じですが、明確にすることはできますか? –

+0

「GMT」はヨーロッパの多くの人にとって自然だと思います。私はGMTを使って育った。 UTCはオフセットの基準点として使用するときにはより科学的/技術的であると感じています。 – d11wtq

+0

私は外部サービス用のXMLを準備しています。これらの形式はまさに必要です...私はUTCとGMTが基本的に同じであることを知っています....私のデータをxmlにエクスポートします... – user1030981

答えて

2
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 
+0

nice!このmonkey_patchを適用するために、このファイル(time.rb)をどこに置くべきですか? – user1030981

+0

私はこのファイルをイニシャライザに渡しましたが、今はあらゆるものが期待どおりに動作します。ありがとうございます – user1030981

+0

この回答は間違っています:エッジケース: "2011-11-11 15:20:01 +1000" => "2011-11-11 15:20:01 GMT +1" –

1
Time.now.strftime("%D %T GMT%z")\ 
    .gsub(/GMT([-\+]\d\d\d\d)/){"GMT#{sprintf("%+d",$1.to_i/100)}"} 
+0

これで日付とタイムゾーンの形式はOPが求めるものと正確に一致します。 – Phrogz

+0

あなたのコードは "2011-11-11 17:45:31 GMT + 0400"を生成しますが、私は "2011-11-11 17:45:31 GMT + 4"が必要です – user1030981

+0

私の答えが適切に機能するように修正しました。 –

関連する問題