gpt4 book ai didi

python - 按季度生成时间序列,递增四分之一

转载 作者:太空狗 更新时间:2023-10-30 01:14:02 25 4
gpt4 key购买 nike

我查看了 arrow 和 python 文档,似乎没有任何按季度递增的内容。例如,以下代码递增地为您提供了月份,给定了直到现在的起始月份。查看 arrow 文档,月末很方便。有什么东西每季度都有吗?

import arrow
from datetime import datetime
a=arrow.Arrow.span_range('month', datetime(2012,7,1,0,0),datetime.now() )

for i in a:
print i[1].floor('day').datetime.strftime("%Y-%m-%d")

我正在寻找一个按季度到现在的解决方案

输入:14Q3

输出:

14Q3
14Q4
15Q1
15Q2
15Q3

最佳答案

要获取当前季度,请使用:(month - 1) // 3 + 1 .生成给定范围内的季度:

from datetime import date

def generate_quarters(start, end):
while start < end: #NOTE: not including *end*
yield start
start = start.increment()

start = Quarter.from_string('14Q3')
end = Quarter.from_date(date.today())
print("\n".join(map(str, generate_quarters(start, end))))

其中 Quarter 是一个简单的 namedtuple 子类:

from collections import namedtuple

class Quarter(namedtuple('Quarter', 'year quarter')):
__slots__ = ()

@classmethod
def from_string(cls, text):
"""Convert 'NQM' into Quarter(year=2000+N, quarter=M)."""
year, quarter = map(int, text.split('Q'))
return cls(year + 2000, quarter)

@classmethod
def from_date(cls, date):
"""Create Quarter from datetime.date instance."""
return cls(date.year, (date.month - 1) // 3 + 1)

def increment(self):
"""Return the next quarter."""
if self.quarter < 4:
return self.__class__(self.year, self.quarter + 1)
else:
assert self.quarter == 4
return self.__class__(self.year + 1, 1)

def __str__(self):
"""Convert to "NQM" text representation."""
return "{year}Q{quarter}".format(year=self.year-2000, quarter=self.quarter)

输出

14Q3
14Q4
15Q1
15Q2
15Q3

不包括当前季度(15Q4)。

关于python - 按季度生成时间序列,递增四分之一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33160952/

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