Rubyで時間を取得するには、Time.nowでできるのですが、
そうではなく、自分が指定したタイムゾーンの値を
取得したいのですが、どなたか方法を知っている方
いましたら、教えていただけないでしょうか?
宜しくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
lang
1require 'active_support' 2require 'active_support/core_ext' 3 4# timezone の一覧 (名前と offset) を得る 5zones = {} 6ActiveSupport::TimeZone.zones_map.values.each {|z| zones[z.nmae] } 7 8# 指定のTimezone での時間を得る 9t = Time.now 10t.in_time_zone('Tokyo') # => Wed, 26 Nov 2014 22:02:40 JST +09:00 11t.in_time_zone('Hawaii') # => Wed, 26 Nov 2014 03:02:40 HST -10:00
See
-
ActiveSupport::TimeZone list of strings for offset
http://stackoverflow.com/questions/15911873/activesupporttimezone-list-of-strings-for-offset -
Ruby on Rails 4.1.8 ActiveSupport::TimeWithZone
http://api.rubyonrails.org/classes/ActiveSupport/TimeWithZone.html -
Time zone reference list
http://www.inmotionhosting.com/support/website/general-server-setup/tz-ref-table
投稿2014/11/26 13:23
総合スコア22324
0
自分が指定したタイムゾーンの値を取得したい
?
自分が指定したのならタイムゾーンの値は知っているはずですよね。
もしかして、「自分が指定したタイムゾーンで現在時刻を取得したい」ですか?
そうであれば、一時的に環境変数TZを変更するのが簡単です。
lang
1#プログラムの最初の方で 2SYSTEM_TZ=ENV["TZ"] 3・・・・・ 4p Time.now #=> 2014-11-26 21:27:10 +0900 5ENV["TZ"]="Asia/Aden" 6p Time.now #=> 2014-11-26 15:28:44 +0300 7ENV["TZ"]=SYSTEM_TZ 8コード
WindowsのRubyInstallerでインストールしたmingw版Rubyだと、タイムゾーンを "Asia/Aden" のような指定は認識されませんでした。"AST-3" のように時差を含めて指定しないといけない。
なお、いったん生成されたTimeオブジェクトのタイムゾーンの変更は、localtimeメソッドで行います。時差の数字が必要。
lang
1a=Time.now 2p a #=> 2014-11-26 21:45:33 +0900 3a.localtime("+03:00") 4p a #=> 2014-11-26 15:45:33 +0300
Time#localtime は破壊的メソッドです。
投稿2014/11/26 12:50
総合スコア84498
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。