Python将字符串salesforce时间戳转换为日期

时间:2018-05-10 15:52:41

标签: python python-2.7 datetime

这是我得到的日期时间字符串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")

2 个答案:

答案 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)