gpt4 book ai didi

elixir - 使用 timex 和 elixir 创建季度间隔

转载 作者:行者123 更新时间:2023-12-04 20:03:15 24 4
gpt4 key购买 nike

我正在尝试创建类似于我如何使用此代码创建每月间隔的季度间隔

[from: start_date, until: end_date, right_open: false]
|> Timex.Interval.new()
|> Timex.Interval.with_step([months: 1])
|> Enum.map(&Timex.format!(&1, "%Y-%m", :strftime))

时间间隔应该是 1 月至 3 月 Q1、4 月至 6 月 Q2、7 月至 9 月 Q3、10 月至 12 月 Q4。我可以通过将月份四舍五入到季度的第一个日期并增加三个月来实现这一点,但我想知道是否有内置的功能来做季度。

最佳答案

如果您总是想要从提供的年份开始的季度,您可以这样做:

Timex.Interval.new(from: Timex.beginning_of_year(provided_date),
until: [years: 1],
right_open: false,
step: [months: 3])
|> Enum.map(&Timex.format!(&1, "%Y-%m", :strftime))

(这将返回 ["2018-01", "2018-04", "2018-07", "2018-10"] )

顺便说一句,您实际上并不需要使用 with_step/2在你原来的行中。您只需要在更改原始步骤时使用该功能。您可以直接在 new/1 中声明步骤就像我在上面的例子中所做的那样。

虽然 Timex 不会自动构建季度间隔,但它确实有办法获取日期所属的季度。如果您需要从当前季度开始,您可以这样做:
Timex.Interval.new(from: Timex.beginning_of_quarter(provided_date),
until: [years: 1],
right_open: false,
step: [months: 3])
|> Enum.map(&Timex.format!(&1, "%Y-%m", :strftime))

关于elixir - 使用 timex 和 elixir 创建季度间隔,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48195509/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com