Erlang中的日期算术

Mag*_*ist 10 erlang datetime date date-arithmetic

我有这种格式的约会{Y,M,D}.是否有任何良好的支持库或我可以使用的技巧,简单地说,从这个日期减去三个月而不会遇到无效日期,闰年等问题.

我最近的类似用法是在MySql中你可以输入:

Select '2011-05-31' - Interval 3 Month;
Run Code Online (Sandbox Code Playgroud)

产量'2011-02-28'.我对如何自己编写这个库不感兴趣,这是我想避免的.

Vic*_*roz 22

1> calendar:gregorian_days_to_date(calendar:date_to_gregorian_days({2011, 7, 14}) - 90).     
{2011,4,15}
Run Code Online (Sandbox Code Playgroud)

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


Dav*_*don 18

使用edate - 特别是shift功能.

> edate:shift({2011,5,31}, -3, months).
{2011,2,28}
Run Code Online (Sandbox Code Playgroud)

在引擎盖下它使用日历模块,因此它正确处理所有角落案例.