Elixir是否支持日期范围?例如,在Elixir中可以使用这样的Ruby代码吗?
require 'date'
d1 = Date::civil 2015, 1, 1
d2 = Date::civil 2015, 1, 7
(d1..d2).each {|d| puts d }
Run Code Online (Sandbox Code Playgroud)
输出:
2015-01-01 2015-01-02 2015-01-03 2015-01-04 2015-01-05 2015-01-06 2015-01-07
小智 8
是的,
使用日期模块
range = Date.range(~D[2001-01-01], ~D[2002-01-01])
Enum.each(range, fn(x) -> IO.puts x end)
Run Code Online (Sandbox Code Playgroud)
输出
2001-01-01
2001-01-02
2001-01-03
2001-01-04
2001-01-05
2001-01-06
2001-01-07
2001-01-08
2001-01-09
2001-01-10
Run Code Online (Sandbox Code Playgroud)
到最后一天即 2002-01-01
@bitwalker 的建议非常好。如果你想在“原生”Elixir 代码中执行此操作:
def generate_all_valid_dates_in_range(start_date, end_date) when start_date <= end_date do
(:calendar.date_to_gregorian_days(start_date) .. :calendar.date_to_gregorian_days(end_date))
|> Enum.to_list
|> Enum.map (&(:calendar.gregorian_days_to_date(&1)))
end
Run Code Online (Sandbox Code Playgroud)
有关此解决方案以及我如何在 Elixir 社区的大量帮助下设计该解决方案的更多信息,请参阅我的博客。但在我看来,Timex 是一个更好的解决方案。
| 归档时间: |
|
| 查看次数: |
1641 次 |
| 最近记录: |