web-dev-qa-db-ja.com

「$ TZ」を設定せずに「TZ」を取得するにはどうすればよいですか?

Rubyプログラムを作成しています。America/New_Yorkのようなものを取得する方法が必要です。ActiveSupport::TimeZonerequire "tzinfo"は現在のタイムゾーンを取得できません。(Time.now.zoneESTのようなものを取得できることに注意してください。しかし、tzデータベース形式(例:America/New_York)が必要です。)これを行う簡単な方法は、ユーザーに$TZTZ='America/New_York'; export TZ、またはtzselectを設定させることです。私はこれを行う方法を探しています。 user set TZ。ロードできるシステムファイル、またはクエリできるネットワークの場所はありますか?

のようなもののタイムゾーンが必要です。

require "active_support/core_ext/time/zones"

Time.zone = ENV['TZ']
p Time.zone.now # Returns current time in the local time zone using ActiveSupport.
2
Christopher

Glibcでは、デフォルトのタイムゾーンは/etc/localtimeに保持されます。これは、tzデータベース内のファイルへのシンボリックリンクである可能性があります(この場合、単に読み取りリンクを作成できます)が、保証はありません。ハードリンクまたはコピーである可能性があります。その場合、ファイルを読み取ってから、tzデータディレクトリ内のすべてのファイルと比較する必要があります。

America/New_Yorkを取得することがどのような目的に役立つと思うかわかりません。

2
Random832