我正试图在第二天开始时(00:00:00)触发事件。我也使用本地时区,而不是UTC,因为触发UTC时间将导致第二天提前开始。以下是我如何获得当地时间:
import pytz
import datetime
tz = pytz.timezone('America/Chicago') # Set the timezone
utc_time = datetime.datetime.utcnow()
local_time = (pytz.utc.localize(utc_time, is_dst=None).astimezone(tz))
if (local_time == datetime.timedelta(days=1)):
*** My action starts here ***
但这似乎不会在当地时间00:00:00触发。我做错了什么?
答案 0 :(得分:0)
您正在检查时间增量1天,因此如果它从15:43开始,delta +1天将是次日15:43。另一件事是如果你错过那个时间它永远不会触发。 在你的地方我会用这个:
import datetetime
from time import sleep
# get current day in month (we don't need anything else)
currentDay = datetime.datetime.now().day # datetime's now is localized
# watch for it to change
while (datetime.datetime.now().day == currentDay):
sleep(1) # increase time if you don't need exactly at the midnight
print("Good midnight, today is...")
答案 1 :(得分:0)
如何在没有日期时间库的情况下执行此操作:
cur = time.localtime()
# ...(time passes)
if cur[:3] != time.localtime()[:3]:
print("It's a new day!")
它是如何工作的? time.localtime()[:3]
给出 time.struct_time
的前 3 个值,比较年、月和日。