开始日期和结束日期之间每天的Erlang日期范围间隔

开始日期和结束日期之间每天的Erlang日期范围间隔,erlang,Erlang,我有一个问题,我挣扎了几天 我有一个开始日期{2017,9,14}和一个结束日期{2018,5,1} 我需要的是从2017-9-14到2017-5-1的每一天循环: {2017, 9, 14} {2017, 9, 15} {2017, 9, 16} [...] {2017, 9, 30} {2017, 10, 1} [...] {2018, 5, 1} 在Erlang中执行此操作的好方法是什么?Erlang中的日历模块有一个功能,可以将日期转换为从第0年开始的公历日数:日历:日期到公历日/1和

我有一个问题,我挣扎了几天

我有一个开始日期
{2017,9,14}
和一个结束日期
{2018,5,1}

我需要的是从2017-9-14到2017-5-1的每一天循环:

{2017, 9, 14}
{2017, 9, 15}
{2017, 9, 16}
[...]
{2017, 9, 30}
{2017, 10, 1}
[...]
{2018, 5, 1}

在Erlang中执行此操作的好方法是什么?

Erlang中的
日历
模块有一个功能,可以将日期转换为从第0年开始的公历日数:
日历:日期到公历日/1
日历:公历日到日期/1
执行相反操作。使用这些,再加上
列表:seq
,我们可以使用列表理解生成列表:

1> From = {2017, 9, 14}.
{2017,9,14}
2> To = {2018, 5, 1}.
{2018,5,1}
3> calendar:date_to_gregorian_days(From).
736951
4> calendar:date_to_gregorian_days(To).
737180
5> lists:seq(calendar:date_to_gregorian_days(From), calendar:date_to_gregorian_days(To)).
[736951,736952,736953,736954,736955,736956,736957,736958,
 736959,736960,736961,736962,736963,736964,736965,736966,
 736967,736968,736969,736970,736971,736972,736973,736974,
 736975,736976,736977,736978,736979|...]
6> [calendar:gregorian_days_to_date(X) || X <- lists:seq(calendar:date_to_gregorian_days(From), calendar:date_to_gregorian_days(To))].
[{2017,9,14},
 {2017,9,15},
 {2017,9,16},
 {2017,9,17},
 {2017,9,18},
 {2017,9,19},
 {2017,9,20},
 {2017,9,21},
 {2017,9,22},
 {2017,9,23},
 {2017,9,24},
 {2017,9,25},
 {2017,9,26},
 {2017,9,27},
 {2017,9,28},
 {2017,9,29},
 {2017,9,30},
 {2017,10,1},
 {2017,10,2},
 {2017,10,3},
 {2017,10,4},
 {2017,10,5},
 {2017,10,6},
 {2017,10,7},
 {2017,10,8},
 {2017,10,9},
 {2017,10,...},
 {2017,...},
 {...}|...]
1>From={2017,9,14}。
{2017,9,14}
2> To={2018,5,1}。
{2018,5,1}
3> 日历:日期到公历日(从)。
736951
4> 日历:日期至公历日(至)。
737180
5> 列表:seq(日历:日期到公历日(从),日历:日期到公历日(到))。
[736951,736952,736953,736954,736955,736956,736957,736958,
736959,736960,736961,736962,736963,736964,736965,736966,
736967,736968,736969,736970,736971,736972,736973,736974,
736975,736976,736977,736978,736979|...]

6> [calendar:gregorian_days_to_date(X)| | X噢哇!感谢您提供了这个优雅的解决方案。我也在使用calendar函数,但却误用了calendar:gregorian_days to_date(calendar:date_to_gregorian_days({2018,1,1})+1)。。。。