这是我得到的日期时间字符串2018-05-04T13:08:20.000 + 0000。 我想将它转换为2018-05-04的日期。下面是我想要使用的for循环,但似乎无法剥离所有小时秒等.Max_data是字符串2018-05-04T13:08:20.000 + 0000
from datetime import timedelta, date
def daterange(start_date, end_date):
for n in range(int ((end_date - start_date).days)):
yield start_date + timedelta(n)
start_date = datetime.strptime(max_data,'%Y-%m-%d')
end_date = date.today()
for single_date in daterange(start_date, end_date):
print single_date.strftime("%Y-%m-%d")
答案 0 :(得分:0)
只需解析整个日期字符串,然后只需使用您需要的内容,例如:
In []:
from datetime import datetime, timedelta
def daterange(start_date, end_date):
for n in range(int ((end_date - start_date).days)):
yield start_date + timedelta(n)
start_date = datetime.strptime(max_data,"%Y-%m-%dT%H:%M:%S.%f%z")
end_date = datetime.now(start_date.tzinfo)
for single_date in daterange(start_date, end_date):
print(single_date.strftime("%Y-%m-%d"))
Out[]:
2018-05-04
2018-05-05
2018-05-06
2018-05-07
2018-05-08
2018-05-09
注意:您需要将tzinfo
传递给now()
以获取tz感知日期时间对象(而不是使用date.today()
)
注意:在Py3.7中,标准库已添加datetime.fromisoformat()
。
答案 1 :(得分:0)
单行内容很容易:
from datetime import datetime as dt
max_data = '2018-05-04T13:08:20.000+0000'
date = dt.strptime(max_data.split('T')[0], '%Y-%m-%d')
print (date)
# output: datetime.datetime(2018, 5, 4, 0, 0)