Python 如何使用endDate(ISO8601和durationDays)计算startDate(UTC)

Python 如何使用endDate(ISO8601和durationDays)计算startDate(UTC),python,Python,我现在有ISO8601格式的endDate和durationDays。 我想用UTC格式计算起始日期 我不确定我的代码是否正确: 当我得到 datetime.datetime.utcfromtimestairstartdate\u时间戳 就像2015-09-26 05:08:23没有时区 所以我加了一个。但我不确定它是否正确 import datetime import dateutil.tz import dateutil.parser import time import pytz en

我现在有ISO8601格式的endDate和durationDays。 我想用UTC格式计算起始日期 我不确定我的代码是否正确: 当我得到 datetime.datetime.utcfromtimestairstartdate\u时间戳 就像2015-09-26 05:08:23没有时区 所以我加了一个。但我不确定它是否正确

import datetime
import dateutil.tz
import dateutil.parser
import time
import pytz


endDate = "2015-10-10T01:08:03-04:00"
durationDays = 13.666435185185186

#convert endDate from ISO8601 to UTC time
pyTime =  dateutil.parser.parse(endDate)
endDateUTC =  pyTime.astimezone(dateutil.tz.tzutc())
print endDateUTC

#convert pyTimeUTC to Timestamp
pyTimeUTC_Timestamp = time.mktime(endDateUTC.timetuple())
print pyTimeUTC_Timestamp


# durationDays * 24 * 60 * 60
durationtimes = durationDays* 24 * 60 * 60

#get startdate Timestamp
startDate_Timestamp = pyTimeUTC_Timestamp - durationtimes
print startDate_Timestamp

# convert startDate_Timestamp back to UTC time
startDateUTC = datetime.datetime.utcfromtimestamp(startDate_Timestamp).replace(tzinfo=pytz.utc)
print startDateUTC

您可以这样测试它,看看它是否给出了您想要的日期:

(endDateUTC-startDateUTC).days
13
(endDateUTC-startDateUTC).seconds
28780

您遇到了什么问题?您需要具体说明。顺便说一句,您是如何得出durationDays=13.666435185185186的,您是否从13天16小时或其他分/秒的时间中手动计算出来的?durationDays值来自kickstarter网站