10

この形式の日付があります{Y,M,D}。無効な日付やうるう年などの問題にぶつかることなく、この日付から3か月を引くなど、適切なサポートライブラリやトリックを使用できますか。

私の最近の同様の使用法は、次のように入力できるMySqlです。

Select '2011-05-31' - Interval 3 Month;

を生成し'2011-02-28'ます。私はこのライブラリを自分で書く方法には興味がありません。それは避けたいことです。

4

3 に答える 3

22
1> calendar:gregorian_days_to_date(calendar:date_to_gregorian_days({2011, 7, 14}) - 90).     
{2011,4,15}

http://www.erlang.org/doc/man/calendar.html

于 2011-07-14T16:55:44.963 に答える
18

edateを使用します-特にシフト関数。

> edate:shift({2011,5,31}, -3, months).
{2011,2,28}

内部ではカレンダーモジュールを使用しているため、すべてのコーナーケースを正しく処理します。

于 2011-07-14T17:02:13.367 に答える
3

この種のものに役立つユーティリティを使用してGitHubの要点を作成しました。必要に応じて、お気軽に盗んでください。

https://gist.github.com/104903

于 2011-07-15T02:58:15.023 に答える