2011-07-14 39 views
9

Tôi có một ngày ở định dạng này {Y,M,D}. Có bất kỳ thư viện hỗ trợ hay thủ thuật nào tôi có thể sử dụng đơn giản hay không, trừ ba tháng kể từ ngày này mà không gặp sự cố với ngày không hợp lệ, năm nhuận, v.v.Số học ngày trong Erlang

Sử dụng tương tự mới nhất của tôi là MySql nơi bạn có thể nhập :

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

sản lượng '2011-02-28'. Tôi không quan tâm đến cách tự viết thư viện này, đó là điều tôi muốn tránh.

Trả lời

17

Sử dụng edate - đặc biệt là chức năng thay đổi.

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

Dưới mui xe, nó sử dụng mô-đun lịch, do đó, nó đề cập chính xác với tất cả các trường hợp góc.

+0

câu trả lời tuyệt vời! .... cảm ơn Weldon –

+0

edate có vẻ rất đẹp, sẽ có một cái nhìn vào nó, cảm ơn! –

19
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

+1

Điều này hoạt động tốt mà không cần tải xuống mô-đun của bên thứ ba, cảm ơn! –

+0

+1 để sử dụng chức năng tích hợp – btk

3

Tôi đã tạo GitHub gist với một số tiện ích hữu ích cho loại điều này. Cảm thấy tự do để ăn cắp từ nó nếu bạn muốn.

https://gist.github.com/104903

Các vấn đề liên quan