2012-02-03 8 views

答えて

24

時間は常に(それが1なしでは意味を持たない)ゾーンを持っています。あなたはDateTime#strftimeを使用して印刷するときにそれを無視することを選択することができます。

now = DateTime.now 
puts now 
#=> 2012-02-03T10:01:24-07:00 

puts now.strftime('%a, %d %b %Y %H:%M:%S') 
#=> Fri, 03 Feb 2012 10:01:24 

は、特定のフォーマットを構築するために使用される不可解なコードについてはTime#strftimeを参照してください。

また、より一般的な表現については、convert your DateTime to UTCとすることもできます。

+8

まったくありません! DateTime(Timeと同じではない)はカレンダー情報のみを格納し、特定の時点を指す必要はありません。したがって、場合によっては不特定の時間帯が意味をなす。たとえば、http://tools.ietf.org/html/rfc5545#section-3.3.5(フォーム#1)。 – skalee

+0

@skalee私はあなたが['Date'](http://ruby-doc.org/stdlib-2.3.1/libdoc/date/rdoc/Date.html)クラスを[' DateTime']と間違えていると思います(http://ruby-doc.org/stdlib-2.3.1/libdoc/date/rdoc/DateTime.html)クラスです。前者にはカレンダー情報のみが含まれ、後者には時間が含まれます(タイムゾーンに関連付ける必要があります)。 'DateTime.new(2016,5,5).to_s#=>" 2016-05-05T00:00:00 + 00:00 "の出力を考えてみましょう。最後の' +00:00'は、これはGMT ** _(ロンドンなど)の真夜中です。デンバー(CO)の深夜ではありません。 – Phrogz

0

他のすべては、あなたもDATE_FORMATSアプリケーションで出力フォーマットを標準化することができますRailsのハッシュに同じstrftimeパラメータを追加することができます受け入れ答えに加えて

zoned_time = Time.now 
unzoned_time = Time.new(zoned_time.strftime("%Y").to_i,zoned_time.strftime("%m").to_i,zoned_time.strftime("%d").to_i,zoned_time.strftime("%H").to_i,zoned_time.strftime("%M").to_i,zoned_time.strftime("%S").to_i,"+00:00") 
1

を失敗しました。 config/initializers/datetime_formats.rb

Time::DATE_FORMATS[:nozone] = '%a, %d %b %Y %H:%M:%S' 

次に、あなたのコードの中であなたができる:

Time.zone.now.to_s(:nozone) 

あなたも、それをデフォルトにすることができます:

Time::DATE_FORMATS[:default] = '%a, %d %b %Y %H:%M:%S' 
Time.zone.now.to_s 

別々のハッシュもあります日付:

Date::DATE_FORMATS[:default] = '%a, %d %b %Y' 

この機能は長年にわたって存在していますが、ほとんど知られていないようです。

関連する問題