我怎样才能把结束日期推迟到明天?尝试将节目安排到 运行 每天
How can I put my end date to tomorrow? Trying to schedule a program to run everyday
我需要此代码 运行 在 11:30 上午(当天)到 3:30 上午(第二天)之间且仅在这些时间期间。
我在使用此代码时遇到的问题是:当我打印 d4
和 d5
时,它会打印今天的日期。但是,d5
应该在第二天打印。我做了一些测试并更改了 windows 时间。将开始时间设为 23:59:00,将结束时间设为 00:02:00。调度程序最终没有启动进程。
这是我将结束时间设置为 00:02:00 时的控制台输出:
代码 运行s 如果时间在同一天之内。所以开始时间 08:30 和结束时间 09:30。我该如何解决这个问题?
下面是我的 json 文件布局
timechanges":[{
"startTime":" 23:58:00",
"endTime":" 00:01:00"
import schedule
import time
from apscheduler.schedulers.blocking import BlockingScheduler
from datetime import date
class myproject():
def __init__(self):
today = date.today()
with open(root / 'time.json', "r") as rf:
decoded_data = json.load(rf)
for p in decoded_data['timechanges']:
startTime=p['startTime']
endTime=p['endTime']
d3 = today.strftime("%Y-%m-%d")
print("d3 =", d3)
d4 = d3+startTime
print("Start time:", d4)
d5 = d3+endTime
print("End time:",d5)
sched = BlockingScheduler()
job=sched.add_job(self.process, 'interval', minutes=2, start_date=d4, end_date=d5)
sched.start()
job.remove()
sched.shutdown()
print("Scheduler shut down")
def process(self):
print("running")
如何使用 datetime
和 timedelta
而不是字符串?如果 starttime > endTime,您可以在 endTime 的日期中添加一天。例如:
from datetime import datetime, timedelta
today = datetime.now()
startTime = "23:58:00"
endTime = "00:01:00"
startTime = datetime.combine(today.date(), datetime.strptime(startTime, "%H:%M:%S").time())
endTime = datetime.combine(today.date(), datetime.strptime(endTime, "%H:%M:%S").time())
if endTime < startTime:
endTime += timedelta(1) # add a day
print("today's date =", today.date())
# today's date = 2021-01-05
print("Start date/time:", startTime.isoformat(" "))
# Start date/time: 2021-01-05 23:58:00
print("End date/time:", endTime.isoformat(" "))
# End date/time: 2021-01-06 00:01:00
我需要此代码 运行 在 11:30 上午(当天)到 3:30 上午(第二天)之间且仅在这些时间期间。
我在使用此代码时遇到的问题是:当我打印 d4
和 d5
时,它会打印今天的日期。但是,d5
应该在第二天打印。我做了一些测试并更改了 windows 时间。将开始时间设为 23:59:00,将结束时间设为 00:02:00。调度程序最终没有启动进程。
这是我将结束时间设置为 00:02:00 时的控制台输出:
代码 运行s 如果时间在同一天之内。所以开始时间 08:30 和结束时间 09:30。我该如何解决这个问题?
下面是我的 json 文件布局
timechanges":[{
"startTime":" 23:58:00",
"endTime":" 00:01:00"
import schedule
import time
from apscheduler.schedulers.blocking import BlockingScheduler
from datetime import date
class myproject():
def __init__(self):
today = date.today()
with open(root / 'time.json', "r") as rf:
decoded_data = json.load(rf)
for p in decoded_data['timechanges']:
startTime=p['startTime']
endTime=p['endTime']
d3 = today.strftime("%Y-%m-%d")
print("d3 =", d3)
d4 = d3+startTime
print("Start time:", d4)
d5 = d3+endTime
print("End time:",d5)
sched = BlockingScheduler()
job=sched.add_job(self.process, 'interval', minutes=2, start_date=d4, end_date=d5)
sched.start()
job.remove()
sched.shutdown()
print("Scheduler shut down")
def process(self):
print("running")
如何使用 datetime
和 timedelta
而不是字符串?如果 starttime > endTime,您可以在 endTime 的日期中添加一天。例如:
from datetime import datetime, timedelta
today = datetime.now()
startTime = "23:58:00"
endTime = "00:01:00"
startTime = datetime.combine(today.date(), datetime.strptime(startTime, "%H:%M:%S").time())
endTime = datetime.combine(today.date(), datetime.strptime(endTime, "%H:%M:%S").time())
if endTime < startTime:
endTime += timedelta(1) # add a day
print("today's date =", today.date())
# today's date = 2021-01-05
print("Start date/time:", startTime.isoformat(" "))
# Start date/time: 2021-01-05 23:58:00
print("End date/time:", endTime.isoformat(" "))
# End date/time: 2021-01-06 00:01:00