読者です 読者をやめる 読者になる 読者になる

mmag

ハマったことメモなど

Elixir 1.3から使える時間に関するsigil

Elixir

Elixir 1.3から時間に関する構造体がいくつか定義されました。そのうちの3つ、Date, Time, NaiveDateTimeをつくるsigilが追加されています。それぞれ~D, ~T, ~Nです。

iexで~D(2016-06-04)と打っても、そのまま表示されてしまい何が作られているのかよくわからないので、|> inspect(structs: false)としています

iex> ~D(2016-06-04) |> inspect(structs: false)
"%{__struct__: Date, calendar: Calendar.ISO, day: 4, month: 6, year: 2016}"

iex> ~T(22:05:33) |> inspect(structs: false)
"%{__struct__: Time, hour: 22, microsecond: {0, 0}, minute: 5, second: 33}"

iex> ~N(2016-06-04 22:05:33) |> inspect(structs: false)
"%{__struct__: NaiveDateTime, calendar: Calendar.ISO, day: 4, hour: 22, microsecond: {0, 0}, minute: 5, month: 6, second: 33, year: 2016}"

6月や5分などの1桁の数字は、06のようにゼロ埋めしていないとエラーになります。

テーマはFB matteをベースにしてます。作者さんに感謝を込めて。