文档结构  
翻译进度:已翻译     翻译赏金:0 元 (?)    ¥ 我要打赏

今天的Erlang Thursday讲的是 calendar:date_to_gregorian_days/3.

正如我们上星期在 Erlang Thursday calendar:day_of_the_week/3 中讲到的,当我们看到一些错误消息的时候,我们看到错误来自于 calendar:date_to_gregorian_days/3。

calendar:day_of_the_week(0, 0, 0).
% ** exception error: no function clause matching calendar:date_to_gregorian_days(0,0,0) (calendar.erl, line 114)
%      in function  calendar:day_of_the_week/3 (calendar.erl, line 151)
calendar:day_of_the_week(1970, 2, 31).
% ** exception error: no true branch found when evaluating an if expression
%      in function  calendar:date_to_gregorian_days/3 (calendar.erl, line 116)
%      in call from calendar:day_of_the_week/3 (calendar.erl, line 151)
calendar:day_of_the_week(1970, 13, 2).
% ** exception error: no function clause matching calendar:last_day_of_the_month1(1970,13) (calendar.erl, line 243)
%      in function  calendar:date_to_gregorian_days/3 (calendar.erl, line 115)
%      in call from calendar:day_of_the_week/3 (calendar.erl, line 151)
第 1 段(可获 2 积分)

在上星期那篇文章里我保证我们下次将深入了解 calendar:date_to_gregorian_days/3 ,所以现在让我们来完成这个任务。

calendar:date_to_gregorian_days/3 有三个入参,一个代表年份的非负整数,一个代表月份的从1到12的整数,一个代表某月第几日的从1到31的整数,该函数返回的值是从公元元年1月1日截止到入参日期的天数。

calendar:date_to_gregorian_days(2015, 4, 16).
% 736069
calendar:date_to_gregorian_days(0, 1, 1).
% 0
calendar:date_to_gregorian_days(1, 1, 1).
% 366
calendar:date_to_gregorian_days(1970, 1, 1).
% 719528
calendar:date_to_gregorian_days(1999, 12, 31).
% 730484
第 2 段(可获 2 积分)

还有一个只接收一个入参的版本 calendar:date_to_gregorian_days/1,它的入参是由年、月、日三个整数组成元组。

calendar:date_to_gregorian_days({2015, 4, 16}).
% 736069
calendar:date_to_gregorian_days({0, 1, 1}).
% 0
calendar:date_to_gregorian_days({1, 1, 1}).
% 366

如果我们传给 calendar:date_to_gregorian_days/1 无效的日期,我们就会在错误消息里看到它正在调用 calendar:date_to_gregorian_days/3 。所以它是一个不错的辅助函数,不破坏我们的模式匹配。

calendar:date_to_gregorian_days({1, 1, 0}).
** exception error: no function clause matching calendar:date_to_gregorian_days(1,1,0) (calendar.erl, line 114)

第 3 段(可获 2 积分)

文章评论

CY2
应该先说明下这个函数的用处
如鹤飞舞
文章里面讲到了。“该函数返回的值是从公元元年1月1日截止到入参日期的天数。”
CY2
好吧,erlang 那么 low 啊,这么一个函数还要单独文章来介绍
如鹤飞舞
人家愿意。有本事你来打我啊!
CY2
没本事
Rushmore
我准备放弃java,学些erlang了,翻译了终于能看懂了!!!!
如鹤飞舞
赶紧学。立刻!马上!