Erlang Thursday – calendar:valid_date/3

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

本来这次我是想讲函数 calendar:time_difference/3 ,但是当我详细看了 calendar 模块的官方文档后,发现文档里已经说这个函数被淘汰了,所以今天我讲 calendar:valid_date/3 。

calendar:valid_date/3 的入参分别是一个表示年份的整数、一个表示月份的整数以及一个表示日的整数。如果传入的日期是有效的,则 calendar:valid_date/3 返回原子true,如果传入的日期是无效的,则 calendar:valid_date/3 返回原子false。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
calendar:valid_date(2015, 04, 31).
% false
calendar:valid_date(2015, 04, 30).
% true
calendar:valid_date(2015, 02, 29).
% false
calendar:valid_date(2012, 02, 29).
% true
calendar:valid_date(2015, 11, 31).
% false
calendar:valid_date(2015, 11, 76).
% false
calendar:valid_date(2015, 17, 13).
% false

我们也可以快速地检查一下本篇文章发布的日期也是有效日期。

1
2
calendar:valid_date(2015, 04, 23).
% true

现在让我们看看入参中有0或负整数情况会怎么样?

1
2
3
4
5
6
7
8
calendar:valid_date(-1, 04, 23).
% false
calendar:valid_date(2015, -7, 21).
% false
calendar:valid_date(2015, 7, -13).
% false
calendar:valid_date(0, 0, 0).
% false

正如人们所希望的,除非你要经常处理公元前的日期,不然的话有一个负数的日期是无效的。

Erlang也提供了函数 calendar:valid_date/1 ,它的入参是由年、月、日三个整数组成的元组。

1
2
3
4
calendar:valid_date({2015, 11, 76}).
% false
calendar:valid_date({2015, 04, 23}).
% true

原文链接: https://www.proctor-it.com/erlang-thursday-calendar-valid_date-3/