计算并减去不是今天的日期的特定时间

Calculate and substract specific time for a date that is not today

我正在尝试为我的电脑编写自动关机代码。我对编程还很陌生,这可能很容易解决。

我有 2 个约会对象

import datetime
startup_date = datetime.datetime.now() #This is the datetime when I start up my pc
shutdown_date = startup_date + datetime.timedelta(days=1) #Tomorrow

所以,我想让 shutdown_date 发生在第二天凌晨 3 点。我想出了如何获得明天的日期,但我不知道如何进行计算才能使计时器始终指向第二天凌晨 3 点。有时我在中午 12 点启动我的电脑,其他日子在下午 2 点启动我的电脑。所以我需要自动计算启动时间和期望的关机时间(第二天凌晨3点)之间的差异。

我确定这很容易解决,但我看不到。

谢谢!

您可以从 shutdown_date 开始,但随后仅使用 date 组件,并将 time 硬编码为 03:00。然后您可以从 startup_date

中减去新的日期时间
>>> import datetime
>>> startup_date = datetime.datetime.now()
>>> shutdown_date = startup_date + datetime.timedelta(days=1)
>>> tomorrow_morning = datetime.datetime(shutdown_date.year, shutdown_date.month, shutdown_date.day, hour=3)
>>> tomorrow_morning - startup_date
datetime.timedelta(seconds=48730, microseconds=54057)

结合凌晨 3 点时间:

shutdown_date = datetime.datetime.combine(shutdown_date, datetime.time(3, 0))

你可以:

  1. 获取今天的日期
  2. 再加一天
  3. 将时间改为凌晨 3 点:
import datetime

startup_date = datetime.datetime.now()
shutdown_date = startup_date + datetime.timedelta(days=1)
shutdown_date = shutdown_date.replace(hour=3, minute=0, second=0, microsecond=0)