2016-09-15 16 views
2

ElixirまたはErlangに現在のタイムゾーンの名前を表示する方法はありますか? Erlangカレンダーモジュールを呼び出すことで、私はElixirでローカルタイムを取得できることを知っています。エリクシルまたはアーランで現在のタイムゾーンを推測するにはどうすればよいですか?

:calendar.local_time 

と私はカレンダーのパッケージを使用してエリクサーでUTCでの現在時刻を取得することができます

Calendar.DateTime.now_utc() 

しかし、どちらもこれらのパッケージの現在の名前を返します方法を私に提供しますタイムゾーン。私はUTCで自分の日付を保存したいが、現地時間帯に表示する。現在のタイムゾーンは "MST7MDT"(DSTが有効でない場合は "MST")と呼ばれますが、これらの文字列を自分のプログラムにハードコードしたくありません。

私の現在のタイムゾーンが「MST7MDT」であることをElixirに伝える方法があるので、Calendar.DateTime関数を使用してDateTimesを正しくフォーマットできますか?

答えて

2

を試すことエンドユーザーへの日付。

しかし、あなたが本当にシステムの現在のタイムゾーンを取得する必要があり、それはあなたがいつものように何かを行うことができ、Unixライクなシステムの場合:

def get_timezone() do 
    {zone, result} = System.cmd("date", ["+%Z"]) 
    if result == 0, do: String.trim(zone) 
end 

は、最もエレガントな解決策が、作品を。 java.util.TimeZone.getDefault()と同等のものは存在しないようです。

+0

ありがとうございました!私はこれらのアプローチの両方を自分のシステムで動作させることができます。 –

0

私は最善のアプローチを表示するときだけ:calendar.universal_time_to_local_timeを使用することだと思う私は、Erlangで文字列としてのローカルタイムゾーン情報を取得するにはどのように公式の方法は、実際に存在しているとは思わないが、あなたはqdateライブラリ

関連する問題