mmag

ハマったことメモなど

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

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のようにゼロ埋めしていないとエラーになります。