Python3中不同时间格式的时差

时间:2017-05-24 13:31:07

标签: python datetime python-3.5 python-dateutil

嗨我有两次略有不同的格式,我需要弄清楚差异。第一个是使用dateutil.parser

从ISO 8601日期解析的

我不确定我需要做什么才能将它们解析成相同的格式,但我的两个日期是:

2017-05-24 15:40:00+00:00
2017-05-24 14:23:44.995015

如果它们都是日期时间格式我可以从另一个中减去一个,所以我需要将两者都减去毫秒(因为这与我无关),并告诉python新字符串都是日期时间?

3 个答案:

答案 0 :(得分:2)

由于你已经在使用dateutil,只是删除时区(或将其添加到另一个时区)并减去它们有什么不对?

import dateutil.parser

date1 = dateutil.parser.parse("2017-05-24 15:40:00+00:00").replace(tzinfo=None)
date2 = dateutil.parser.parse("2017-05-24 14:23:44.995015")

date_delta = date1 - date2  # 1:16:15.004985

您可以在日期调用replace(microsecond=0)以删除微秒。

答案 1 :(得分:0)

您可以使用以下代码将第二个日期时间(即时间戳)转换为第一个日期时间:

def convert_to_timestamp(string_date):
    the_datetime = datetime.strptime(string_date.decode("utf-8"), "%Y%m%d.%H%M%S.%f")
    return time.mktime(the_datetime.timetuple()) * 1e6 + the_datetime.microsecond

或:

def transformTimestamps(timestamp_):
year = timestamp_[:4]
month = timestamp_[4:6]
day = timestamp_[6:8]
hour = timestamp_[9:11]
minute = timestamp_[11:13]
second = timestamp_[13:15]
microsecond = timestamp_[16:22]
myformat = year+"-"+month+"-"+day+" +hour+":"+minute+":"+second+":"+microsecond
return datetime.strptime(myformat, '%Y-%m-%d %H:%M:%S:%f')

然后,您可以计算它们之间的差异。

我希望这有帮助。问候!

答案 2 :(得分:0)

可能你想使用这种方法

  

datetime.strptime(date_string,format)

另外请记住,当您声明指定的日期时,您可以摆脱日期中不需要的元素(如毫秒),如

  

class datetime.datetime(年,月,日,小时= 0,分钟= 0,秒= 0,   microsecond = 0,tzinfo = None,*,fold = 0)

有关此主题的更多信息,您可以随时阅读python文档,您可以在此处找到我刚才提供的相同信息: https://docs.python.org/3/library/datetime.html

希望它有所帮助。