Python3 中不同时间格式的时差
Time difference with different time formats in Python3
您好,我有两次格式略有不同,我需要找出不同之处。第一个是使用 dateutil.parser
从 ISO 8601 日期解析的
我不确定我需要做什么才能将它们解析成相同的格式,但我的两个日期是:
2017-05-24 15:40:00+00:00
2017-05-24 14:23:44.995015
如果它们都是日期时间格式,我可以从另一个中减去一个,所以我需要将两者的毫秒数都去掉(因为这与我无关),并告诉 python 新字符串是两个日期时间?
您可以使用以下代码将第二个日期时间(即时间戳)转换为第一个日期时间:
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')
然后,你可以算出它们的差值。
希望对您有所帮助。您好!
可能你想用这个方法
datetime.strptime(date_string, format)
还请记住,当您声明指定日期时,您可以删除日期中不需要的元素(如毫秒),如
class datetime.datetime(year, month, day, hour=0, minute=0, second=0,
microsecond=0, tzinfo=None, *, fold=0)
有关此主题的更多信息,您可以随时阅读 python 文档,您可以在此处找到我刚刚提供给您的相同信息以及更多信息:
https://docs.python.org/3/library/datetime.html
希望对您有所帮助。
既然您已经在使用 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)
来删除微秒。
您好,我有两次格式略有不同,我需要找出不同之处。第一个是使用 dateutil.parser
从 ISO 8601 日期解析的我不确定我需要做什么才能将它们解析成相同的格式,但我的两个日期是:
2017-05-24 15:40:00+00:00
2017-05-24 14:23:44.995015
如果它们都是日期时间格式,我可以从另一个中减去一个,所以我需要将两者的毫秒数都去掉(因为这与我无关),并告诉 python 新字符串是两个日期时间?
您可以使用以下代码将第二个日期时间(即时间戳)转换为第一个日期时间:
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')
然后,你可以算出它们的差值。
希望对您有所帮助。您好!
可能你想用这个方法
datetime.strptime(date_string, format)
还请记住,当您声明指定日期时,您可以删除日期中不需要的元素(如毫秒),如
class datetime.datetime(year, month, day, hour=0, minute=0, second=0, microsecond=0, tzinfo=None, *, fold=0)
有关此主题的更多信息,您可以随时阅读 python 文档,您可以在此处找到我刚刚提供给您的相同信息以及更多信息: https://docs.python.org/3/library/datetime.html
希望对您有所帮助。
既然您已经在使用 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)
来删除微秒。