如何减去从 API 服务器收到的时间和 Python 中的当前时间
How to minus time that received from API server and current time in Python
请在我的查询下方提供帮助:
我从 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 =
好的,首先您需要将 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
您的时间字符串包含时区信息。根据 在 python 3.7
中很容易将其转换为 datetime 对象
import datetime
received = datetime.datetime.fromisoformat(Receved_time_frim_API)
在以前的版本中,没有简单的内联程序可以将带有时区的字符串转换为日期时间对象。如果您使用的是较早的 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
请在我的查询下方提供帮助:
我从 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 =
好的,首先您需要将 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
您的时间字符串包含时区信息。根据 在 python 3.7
中很容易将其转换为 datetime 对象import datetime
received = datetime.datetime.fromisoformat(Receved_time_frim_API)
在以前的版本中,没有简单的内联程序可以将带有时区的字符串转换为日期时间对象。如果您使用的是较早的 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