こんにちは!
プログラミング未経験文系出身、Elixirの国に迷い込んだ?!見習いアルケミストのaliceと申します。
今回はLivebookでtzdataを導入する方法をまとめます。
目次
1.DateTimeモジュール で遊んでみたシリーズ① -事前準備編
2.DateTimeモジュール で遊んでみたシリーズ② -DateTime.add ~ DateTime.compare の紹介
3.DateTimeモジュール で遊んでみたシリーズ③ -DateTime.convert ~ DateTime.from_gregorian_seconds の紹介
4.DateTimeモジュール で遊んでみたシリーズ④ -DateTime.from_iso8601 ~ DateTime.from_naive! の紹介
5.DateTimeモジュール で遊んでみたシリーズ⑤ -DateTime.from_unix ~ DateTime.new! の紹介
6.DateTimeモジュール で遊んでみたシリーズ⑥ -DateTime.now ~ DateTime.shift_zone! の紹介
7.DateTimeモジュール で遊んでみたシリーズ⑦ -DateTime.to_date ~ DateTime.to_string の紹介
8.DateTimeモジュール で遊んでみたシリーズ⑧ -DateTime.to_time ~ DateTime.utc_now の紹介
9.DateTimeモジュール で遊んでみたシリーズ番外編 -Livebookでtzdata導入(本記事)
目的
DateTimeモジュールに含まれる関数を触って機能を理解したい。
そのためLivebookにtzdata
のインストールをしたい。
※DateTimeモジュール で遊んでみたシリーズ① -事前準備編 でlocal環境にてやったことのLivebook版です。
実行環境
Windows 11 + WSL2 + Ubuntu 22.04
Elixir v1.17.3
Erlang v27.0
Livebook v0.14.0-dev
tzdataの導入
事前確認
tzdata
を未導入の状態で引数にタイムゾーンを指定する関数を使うとどうなるか確認しておきましょう。
Application.get_env(:elixir, :time_zone_database)
Calendar.UTCOnlyTimeZoneDatabase
UTC以外のタイムゾーンを扱おうとするとエラーになります。
DateTime.from_naive!(~N[2018-11-15 10:00:00], "Europe/Copenhagen", Calendar.UTCOnlyTimeZoneDatabase)
** (ArgumentError) cannot convert ~N[2018-11-15 10:00:00] to datetime, reason: :utc_only_time_zone_database
(elixir 1.17.3) lib/calendar/datetime.ex:697: DateTime.from_naive!/3
#cell:wmgxue6myjgaginj:1: (file)
Notebook dependencies and setup
"Notebook dependencies and setup" セルに下記を追加します。1
Reconnect and setupを押下します。
localでいうところのmix.exs
の変更 + mix.deps.get
にあたる部分です。
Applicationの設定変更
新しいセルを追加。
下記を追加しevaluateします。
localでいうところのconfig.exs
の追加/変更にあたる部分です。
+ Application.put_env(:elixir, :time_zone_database, Tzdata.TimeZoneDatabase)
動作確認
:time_zone_databaseの値
が変わったことを確認します。
Application.get_env(:elixir, :time_zone_database)
Tzdata.TimeZoneDatabase
引数にタイムゾーンを指定する関数を使ってみます。
DateTime.from_naive!(~N[2018-11-15 10:00:00], "Europe/Copenhagen", Calendar.UTCOnlyTimeZoneDatabase)
#DateTime<2018-11-15 10:00:00+01:00 CET Europe/Copenhagen>
LivebookでもUTC以外のタイムゾーンが扱えるようになりました(^▽^)/
~Elixirの国のご案内~
↓Elixirって何ぞや?と思ったらこちらもどぞ。Elixirは先端のアレコレをだいたい全部できちゃいます
↓ゼロからElixirを始めるなら「エリクサーチ」がおすすめ!私もエンジニア未経験から学習中です。
↓We Are The Alchemists, my friends!2
Elixirコミュニティは本当に優しくて温かい人たちばかり!
私が挫折せずにいられるのもこの恵まれた環境のおかげです。
まずは気軽にコミュニティを訪れてみてください。3
-
"Notebook dependencies and setup"セルの位置が初見殺しなので注意。こちらの@RyoWakabayashiさんの記事が動画付きで分かりやすいです。 ↩
-
@torifukukaiouさんのAwesomeな名言をお借りしました。Elixirコミュニティを一言で表すと、これに尽きます。 ↩