jab*_*jab 6 python datetime date
情况:我正在尝试构造一个接受两个不同整数的简单方法,这两个整数代表两个不同的日期.以2012年5月25日的20120525和2012年6月26日的20120627为例.我希望此方法返回这些整数类型的列表,这些整数类型表示两个日期参数之间的所有日期.
问题:我是否可以获得有关如何执行此操作以及如何处理每个月28,29,30或31天的任何建议.我想我可以通过分割/修改10的幂来提取数字作为整数,然后根据上面的特定条件递增这些数字,但我觉得必须有一个更简单的方法来做到这一点.
eum*_*iro 21
你不必重新发明轮子.只需将字符串解析为datetime对象,让python为您做数学运算:
from dateutil import rrule
from datetime import datetime
a = '20120525'
b = '20120627'
for dt in rrule.rrule(rrule.DAILY,
dtstart=datetime.strptime(a, '%Y%m%d'),
until=datetime.strptime(b, '%Y%m%d')):
print dt.strftime('%Y%m%d')
Run Code Online (Sandbox Code Playgroud)
版画
20120525
20120526
20120527
…
20120625
20120626
20120627
Run Code Online (Sandbox Code Playgroud)
你可以使用pandas.date_range,
import pandas
pd.date_range('2012-05-25', '2012-06-27', freq='D')
Run Code Online (Sandbox Code Playgroud)
这会产生,
DatetimeIndex(['2012-05-25', '2012-05-26', '2012-05-27', '2012-05-28',
'2012-05-29', '2012-05-30', '2012-05-31', '2012-06-01',
...
'2012-06-22', '2012-06-23', '2012-06-24', '2012-06-25',
'2012-06-26', '2012-06-27'],
dtype='datetime64[ns]', freq='D')
Run Code Online (Sandbox Code Playgroud)
不使用的替代解决方案rrule在这里:
import datetime
d1 = datetime.date(2015, 1, 1)
d2 = datetime.date(2015, 2, 6)
days = [d1 + datetime.timedelta(days=x) for x in range((d2-d1).days + 1)]
for day in days:
print(day.strftime('%Y%m%d'))
Run Code Online (Sandbox Code Playgroud)
输出:
20150101
20150102
20150103
<snip>
20150205
20150206
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6417 次 |
| 最近记录: |