将来または過去の日付を計算する

Elixir:
将来または過去の日付を計算する

How to: (やり方)

Elixir で将来または過去の日付を計算する基本は DateTime モジュールを使うことです。ここに基本的な例を挙げます:

# 現在の日時を取得
current_time = DateTime.utc_now()

# 10日後の日時を計算
ten_days_later = DateTime.add(current_time, 10 * 24 * 60 * 60)

# 出力
IO.puts(DateTime.to_string(ten_days_later))

たったこれだけで、10日後の日時が表示されます。

# 現在の日時
current_time = DateTime.utc_now()

# 30日前の日時を計算
thirty_days_ago = DateTime.add(current_time, -30 * 24 * 60 * 60)

# 出力
IO.puts(DateTime.to_string(thirty_days_ago))

これで30日前の日時を簡単に得ることができます。

Deep Dive (深く掘り下げて)

Elixir の DateTime クラスは、時刻計算を扱うのにとても便利です。Elixir には以前は :calendar モジュールがありましたが、より洗練された機能を提供する DateTime に置き換わりました。日時計算では、時間単位の変換(秒、分、時間)を意識する必要があることに注意してください。この例では、日数を秒数に変換しています。DateTime.add/3 関数は、DateTime 構造体と追加したい秒数、そして時間帯情報をオプションとして受け取ります。

タイムゾーンを扱う場合は Timezone モジュールが役に立ちますが、上の例では DateTime.utc_now/0 を用いて協定世界時(UTC)をベースにしています。他のライブラリや方法もありますが、Elixir 標準のモジュールを使ってもかなり柔軟に多くのことができます。

See Also (関連情報)