ローカルタイムで時間を表示するためには、まずタイムゾーンデータベースが必要となるようです。
Nervesファームウエア開発の上ではNervesコアチームの開発したnerves_time_zonesというElixirパッケージが便利です。
インストール
まずnerves_time_zonesを依存関係リストに追加し、mix deps.get
コマンドを実行します。
mix.exs
def deps do
[
{:nerves_time_zones, "~> 0.1.2"}
]
end
設定
nerves_time_zonesの設定はコンパイル時もしくは実行時に設定可能です。
コンパイル時
-
config/config.exs
でタイムゾーンの初期値を設定。 - 何も指定しない場合は
UTC
が使用されます。
config/config.exs
config :nerves_time_zones, default_time_zone: "Asia/Tokyo"
実行時
- IExやコードでタイムゾーンを変更したい場合。
# 現在使用されているタイムゾーンを表示
iex> NervesTimeZones.get_time_zone()
# タイムゾーンを変更
iex> NervesTimeZones.set_time_zone("America/New_York")
# タイムゾーンを初期値に戻す
iex> NervesTimeZones.reset_time_zone()
その他の便利な関数
# 使用可能なタイムゾーン名リストを表示
iex> NervesTimeZones.time_zones()
["Africa/Abidjan", "Africa/Accra", "Africa/Addis_Ababa", "Africa/Algiers", ...
# タイムゾーン名が使用可能か確認
iex> NervesTimeZones.valid_time_zone?("Autoracex")
false
iex> NervesTimeZones.valid_time_zone?("Asia/Tokyo")
true
# nerves_time_zonesが使用するタイムゾーン関連の環境変数を表示。
iex> NervesTimeZones.tz_environment()
%{
"TZ" => "/srv/erlang/lib/nerves_time_zones-0.1.10/priv/zoneinfo/America/New_York",
"TZDIR" => "/srv/erlang/lib/nerves_time_zones-0.1.10/priv/zoneinfo"
}