gpt4 book ai didi

python - 如何获取两个日期之间的日期

转载 作者:太空宇宙 更新时间:2023-11-03 14:45:52 26 4
gpt4 key购买 nike

我有开始日期和结束日期。我需要获取这两个日期之间的所有日期。还有一个条件是它应该返回基于拆分方式的日期,即它可以是周基、天基、小时基、月基

我检查了 pandas date_range 函数,但它只返回所有日期系列的结尾。

time_range = pandas.date_range(start_date, end_date, freq='W')

这仅返回每周的开始(开始日期),而不是结束一周(end_date)。

示例:

time_range = pandas.date_range('2018-01-01 00:00:00', '2018-03-23 00:00:00', freq='W')

Result:
['2018-01-06 00:00:00Z', '2018-01-13 00:00:00Z', '2018-01-20 00:00:00Z', '2018-01-27 00:00:00Z', '2018-02-03 00:00:00Z', '2018-02-10 00:00:00Z', '2018-02-17 00:00:00Z', '2018-02-24 00:
00:00Z', '2018-03-03 00:00:00Z', '2018-03-10 00:00:00Z', '2018-03-17 00:00:00Z']

我需要开始日期和周末,即在本例中

'2018-01-01 00:00:00Z' - '2018-01-06 00:00:00Z'
'2018-01-07 00:00:00Z' - '2018-01-13 00:00:00Z'
'2018-01-14 00:00:00Z' - '2018-01-20 00:00:00Z'
'2018-01-21 00:00:00Z' - '2018-01-27 00:00:00Z'
'2018-02-28 00:00:00Z' - '2018-02-03 00:00:00Z'

------------等等

最佳答案

这是一个使用“工作日”过滤和自定义 weekmask 的 numpy 解决方案:

>>> all_days = np.arange('1970-02-05', '1970-05-08', dtype='M8[D]')
>>> week_start_end = all_days[np.is_busday(all_days, weekmask='Mon Sun')]
>>> week_start_end
array(['1970-02-08', '1970-02-09', '1970-02-15', '1970-02-16',
'1970-02-22', '1970-02-23', '1970-03-01', '1970-03-02',
'1970-03-08', '1970-03-09', '1970-03-15', '1970-03-16',
'1970-03-22', '1970-03-23', '1970-03-29', '1970-03-30',
'1970-04-05', '1970-04-06', '1970-04-12', '1970-04-13',
'1970-04-19', '1970-04-20', '1970-04-26', '1970-04-27',
'1970-05-03', '1970-05-04'], dtype='datetime64[D]')

这只适用于数周。对于其他单位:

>>> def first_last_range(start, stop, step='M', resolution='D'):
... large = np.arange(start, stop, dtype=f'M8[{step}]')
... first = large.astype(f'M8[{resolution}]')
... last = (large + np.timedelta64(1, step)).astype(f'M8[{resolution}]') - np.timedelta64(1, resolution)
... full = np.c_[first, last].ravel()
... return full[full[0] < np.datetime64(start) : len(full) - (full[-1] > np.datetime64(stop))]
...
>>>
>>> first_last_range('1970-02-05', '1970-05-08')
array(['1970-02-28', '1970-03-01', '1970-03-31', '1970-04-01',
'1970-04-30'], dtype='datetime64[D]')

请注意,您可能希望根据您的需要调整端点语义。

关于python - 如何获取两个日期之间的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49532511/

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