
'2018-09-25 15:00:00' のような文字列を特定のタイムゾーン文字列として読み込んで
別のタイムゾーン文字列として出力する方法はありますか?
強引にオフセットの加減をすればできなくはないのですが
タイムゾーンの名前だけでうまく変換できないでしょうか
たとえばUTCとして読み込んでローカルのタイムゾーンに変換する場合
Time.utc.parse('2018-09-25 15:00:00').local()
みたいな感じでかきたいんですが
Rails のマニュアルの読み方がわからなくてそれらしいメソッドを組み合わせてもなかなかうまくいきません
追記:
Rails のマニュアルのタイムゾーン関連のメソッド一覧はどうやって調べればいいんでしょうか
たとえば
utc_to_local(time)
Adjust the given time to the simultaneous time in the time zone represented by self. Returns a Time.utc() instance – if you want an ActiveSupport::TimeWithZone instance, use DateAndTime::Zones#in_time_zone instead.
とかいてあるんですが Time.utc() instance というのが
Time.class のページをみにいっても utc なんて項目はないし
どこをみればいいのかさっぱりわかりません
追記:
utc_time = ActiveSupport::TimeZone.new('UTC').parse(2018-09-27 12:00:00);
puts utc_time
puts Time.zone.utc_to_local(utc_time)
だと
2018-09-27 12:00 UTC
2018-09-27 21:00 UTC
となって時刻はあってるんですがタイムゾーンが変換されない…
simulate... return utc instance ってこういう意味だったんですね…
タイムゾーンも変更するにはどうすればいいんでしょうか
追記:
その説明にかわりに DateAndTime::Zones#in_time_zone ってかいてありました
puts utc_time.in_time_zone(Time.zone)
としたところ
2018-09-27 21:00:00 +0900
になってやりたいことができそうです
試してないですがたぶん Time.zone のかわりに ActiveSupport::Timezone.new(...) をいれれば任意のタイムゾーンに変換できるってことですよね…

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/09/27 09:52