如何减去从API服务器收到的时间和Python中的当前时间

问题描述 投票:0回答:2

请在我的查询下方提供帮助:

我从如下所示的API服务器获得了估计的时间:2019-09-25T20:11:23+08:00

似乎带有时区的ISO 8601标准。

我想知道如何计算从上述值到当前时间还剩下多少天,小时,分钟和秒。

import datetime

Receved_time_frim_API = "2019-09-25T20:11:23+08:00"
Current_time = datetime.datetime.now()

left_days = 
left_hour =
left_min =
left_sec =

python time iso8601
2个回答
0
投票

您的时间字符串包含时区信息。根据https://stackoverflow.com/a/13182163/12112986,很容易将其转换为python 3.7中的datetime对象

import datetime
received = datetime.datetime.fromisoformat(Receved_time_frim_API)

在以前的版本中,没有一个简单的方法将带有时区的字符串转换为datetime对象。如果您使用的是较早的python版本,则可以尝试一些粗糙的东西,例如

>>> date, timezone = Receved_time_frim_API.split("+")
>>> tz_hours, tz_minutes = timezone.split(":")
>>> date = datetime.datetime.strptime(date, "%Y-%m-%dT%H:%M:%S")
>>> date -= datetime.timedelta(hours=int(tz_hours))
>>> date -= datetime.timedelta(minutes=int(tz_minutes))

请注意,这仅在正时区时有效

要减去两个日期时间对象使用

td = date - Current_time
left_days = td.days
left_hour = td.seconds // 3600
left_min = (td.seconds//60)%60
left_sec = (td.seconds % 60) - 

0
投票

首先,您需要将Receved_time_frim_API解析为日期时间格式:

from dateutil import parser
Receved_time_frim_API = parser.parse("2019-09-25T20:11:23+08:00")

但是您不能只从Current_time中减去它,因为datetime.now()不知道时区:

from datetime import timezone
Current_time = datetime.datetime.now().replace(tzinfo=timezone.utc)
print (Current_time-Receved_time_frim_API)

结果为datetime.timedelta

© www.soinside.com 2019 - 2024. All rights reserved.