2016-03-19 11 views
1

Wed, 23 Mar 2016 00:07:00 ICT +07:00を取得しました。to_sを呼び出すと、"03/23/2016 12:07 AM"が返されますが、必要なものは"03/23/2016 07:07 AM"です。ルビーのユーザータイムゾーンで時刻を文字列に変換する

解説は解説付きです。

+0

は、 'Object :: Time'または' Object :: Date :: DateTime'変数ですか? – DoubleV

+0

@DoubleV ActiveSupport :: TimeWithZoneオブジェクトです。これはActiveRecordの属性です。 – Frozenna

+0

実際には、Railsはすべてのことをすでに行っていますが、私は悪い日付の時刻形式をクライアント側から解析しました。 – Frozenna

答えて

2

特定の形式の時間が必要な場合は、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_sまたはinspectを使用しないでください。 strftimeにまっすぐに行く方が良いので、後に書いたフォーマットを正確に得ることができます。

2

私はこれがうまくいくと思います:tTimeのインスタンスである

(t + (7*60*60)).to_s

+0

私はトリックを参照してください、しかし、これを処理する方法をRailsは知っていませんか? – Frozenna

+1

@Frozennaこの[リンク](http://api.rubyonrails.org/classes/ActiveSupport/TimeWithZone.html)が役立つと思います。 –

関連する問題