gpt4 book ai didi

python - 在Python中,将一天中的特定时间与纪元中的当前时间进行比较

转载 作者:行者123 更新时间:2023-12-01 03:56:54 24 4
gpt4 key购买 nike

我正在尝试将当前时间 (A) 与当天的某个时间 (B) 进行比较。随后,根据比较结果,我想返回特定时间的 POSIX 时间,明天 (C) 或后天 (D)。

举个例子来说明:

Suppose we have the current time (A) to be 12:00. I want to compare that to (B), which is 20:00 today.

Since A < B, I want to return 13:00 tomorrow, formatted as a POSIX time.

另一个例子:

Now suppose the current time (A) is 21:00. I still want to compare that to (B), which is 20:00 today.

Since A > B, I want to return 13:00 the day after tomorrow, again formatted as a POSIX time.

我一直在尝试使用 timedatetime 库来完成这项工作,但是当使用 time 时,我很难找到B,当使用 datetime 时,我找不到将 C 和 D 作为 POSIX 时间返回的方法。

我是否正确确定了应该使用哪些库?如果是,我缺少什么?

最佳答案

有两个问题:

  • 根据相对于 20:00 的当前时间,查找您是否需要“明天 13:00” 还是“后天 13:00”
  • 将结果(例如“明天 13:00”)转换为 POSIX 时间

第一个很简单:

#!/usr/bin/env python
import datetime as DT

current_time = DT.datetime.now()
one_or_two = 1 if current_time.time() < DT.time(20, 0) else 2
target_date = current_time.date() + DT.timedelta(days=one_or_two)
target_time = DT.datetime.combine(target_date, DT.time(13, 0))

注意:00:00 被视为小于 20:00。您可能想使用时间间隔,例如 20:00-8:008:00-20:00find out whether the current time is in between .

<小时/>

第二个问题本质上与How do I convert local time to UTC in Python?相同在一般情况下,没有确切的答案,例如,相同的本地时间可能会出现两次,或者可能完全丢失 - 使用什么答案取决于具体的应用程序。更多详情请参阅我对 python converting string in localtime to UTC epoch timestamp 的回答.

为了获得正确的结果,考虑到从现在到目标时间(例如“后天”)之间可能的 DST 转换或本地 UTC 偏移量的其他变化:

import pytz    # $ pip install pytz
import tzlocal # $ pip install tzlocal

epoch = DT.datetime(1970,1,1, tzinfo=pytz.utc)
local_timezone = tzlocal.getlocalzone()
timezone_aware_dt = local_timezone.localize(target_time, is_dst=None)
posix_time = (timezone_aware_dt - epoch).total_seconds()

注意:is_dst=None 用于断言给定的本地时间存在且明确,例如,您本地时间的 13:00 没有 DST 转换。

如果time.mktime()可以访问您平台上的历史时区数据库(或者您只是不关心本地UTC偏移量的变化),那么您可以找到“纪元”仅使用 stdlib 的时间:

import time

unix_time = time.mktime(target_time.timetuple())

您可以在Find if 24 hrs have passed between datetimes - Python中阅读有关何时失败以及如何解决该问题的更多详细信息。 .

或者您可能想知道的有关在 Python 中查找 POSIX 时间戳的更多内容可以在 Converting datetime.date to UTC timestamp in Python 中找到。 .

关于python - 在Python中,将一天中的特定时间与纪元中的当前时间进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37297707/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com