7
我想創建一個從開始日期值日期列表來結束日期列表如何創建流和日期
這類似於How to create a range of dates in R但在藥劑的東西。
由於列表可能很大或有時是無限的(即沒有結束日期),我也想知道如何創建一個日期流。
我想創建一個從開始日期值日期列表來結束日期列表如何創建流和日期
這類似於How to create a range of dates in R但在藥劑的東西。
由於列表可能很大或有時是無限的(即沒有結束日期),我也想知道如何創建一個日期流。
start_date = Calendar.Date.from_erl!({2014,12,27})
date_stream = Stream.iterate(start_date, &(Calendar.Date.next_day!(&1)))
Enum.take(date_stream, 10)
#=>
[%Calendar.Date{day: 27, month: 12, year: 2014},
%Calendar.Date{day: 28, month: 12, year: 2014},
%Calendar.Date{day: 29, month: 12, year: 2014},
%Calendar.Date{day: 30, month: 12, year: 2014},
%Calendar.Date{day: 31, month: 12, year: 2014},
%Calendar.Date{day: 1, month: 1, year: 2015},
%Calendar.Date{day: 2, month: 1, year: 2015},
%Calendar.Date{day: 3, month: 1, year: 2015},
%Calendar.Date{day: 4, month: 1, year: 2015},
%Calendar.Date{day: 5, month: 1, year: 2015}]
感謝JoséValim指着正確的方向。
不適用於elixir 1.4 – Nomad
你可以看看'Stream.iterate/2'。你會給它一個初始值和一個函數,它取當前日期併發出下一個日期。然後爲了獲得100天,你可以調用'Enum.take(date_stream,100)'。 Erlang中的日曆模塊或Timex和Calends等庫可以幫助進行日期操作。 –
關於這個問題還有一些進一步的討論[這裏](http://onor.io/2014/11/07/athena-code/)和[這裏](http://codereview.stackexchange.com/questions/ 69120 /生成所有有效日期),無論它是值得的。 –