通过@Sheharyar答案是几乎没有,你需要减去最大的天,唯一的区别在这两个月份:
defmodule Dating do
def previous_month(%Date{day: day} = date) do
days = max(day, (Date.add(date, -day)).day)
Date.add(date, -days)
end
end
Run Code Online (Sandbox Code Playgroud)
适用于所有情况:
iex|1 ? Dating.previous_month(~D[2018-03-31])
#? ~D[2018-02-28]
iex|2 ? Dating.previous_month(~D[2018-03-01])
#? ~D[2018-02-01]
iex|3 ? Dating.previous_month(~D[2018-01-02])
#? ~D[2017-12-02]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1358 次 |
| 最近记录: |