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

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

How to: (方法)

import Data.Time

-- 今日の日付を取得して、10日後の日付を計算する例
main :: IO ()
main = do
  today <- utctDay <$> getCurrentTime
  let tenDaysLater = addDays 10 today
  putStrLn $ "10日後は: " ++ show tenDaysLater

実行結果:

10日後は: 2023-05-03
-- 特定の日付から60日前を計算する例
main :: IO ()
main = do
  let pastDate = fromGregorian 2023 3 25 -- 2023年3月25日
  let sixtyDaysEarlier = addDays (-60) pastDate
  putStrLn $ "60日前は: " ++ show sixtyDaysEarlier

実行結果:

60日前は: 2023-01-24

Deep Dive (深い潜在)

時間を扱う計算は長い間プログラミングの基本的な部分です。歴史的に、何らかの形で日付計算を行う必要がありました。Haskell の Data.Time モジュールは、日付と時刻を扱うための標準的な手段を提供します。

代替手段としては、time ライブラリ以外にも chronos, thyme などのライブラリがありますが、Data.Timeが一般的に推奨されています。

実装の詳細として、日付の計算は内部的にグレゴリオ暦を使用して、閏年などの規則にも対応しています。正確な計算には多くの時刻計算とタイムゾーンの扱いが含まれることがあります。

See Also (関連情報)