def my_clock(): print("Hello! This time is ", datetime.now().strftime('%Y-%m-%d %H:%M:%S')) scheduler = BlockingScheduler() scheduler.add_job(my_clock, "interval", seconds=5) scheduler.start()
时间: 2024-04-28 21:21:02 浏览: 119
这是一个Python代码片段,它使用了datetime库和APScheduler库来创建一个定时器,每隔5秒钟输出当前时间的信息。函数my_clock()使用datetime.now().strftime()方法获取当前时间并以指定的格式进行输出。BlockingScheduler()和scheduler.add_job()方法则用于创建定时任务,并以指定的时间间隔执行任务。最后,scheduler.start()方法启动定时器。
相关问题
py实现,datetime.now().strftime('%Y-%m-%d %H:%M:%S')记录时间,3min后,再次datetime.now().strftime('%Y-%m-%d %H:%M:%S')记录当前时间,计算两个时间点之间有多少个10秒
你可以使用Python的datetime模块来实现这个功能。首先,你可以使用datetime.now()函数获取当前时间,并使用strftime('%Y-%m-%d %H:%M:%S')将其格式化为字符串表示。然后,你可以等待3分钟后再次获取当前时间,并计算两个时间点之间相差的秒数。最后,你可以将相差的秒数除以10,得到两个时间点之间有多少个10秒。
以下是一个示例代码:
```python
import datetime
import time
# 记录起始时间
start_time = datetime.datetime.now()
start_time_str = start_time.strftime('%Y-%m-%d %H:%M:%S')
print("起始时间:", start_time_str)
# 等待3分钟
time.sleep(180)
# 记录结束时间
end_time = datetime.datetime.now()
end_time_str = end_time.strftime('%Y-%m-%d %H:%M:%S')
print("结束时间:", end_time_str)
# 计算两个时间点之间相差的秒数
time_diff = (end_time - start_time).total_seconds()
# 计算两个时间点之间有多少个10秒
num_of_10s = int(time_diff / 10)
print("两个时间点之间有", num_of_10s, "个10秒")
```
所以报错这样是正常的对吗from apscheduler.schedulers.blocking import BlockingScheduler from apscheduler.events import EVENT_JOB_EXECUTED, EVENT_JOB_ERROR import datetime import logging logging.basicConfig(level=logging.INFO, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', datefmt='%Y-%m-%d %:H%M%S', filename='log1.txt', filemode='a') logging.FileHandler(encoding='utf-8', filename='log1.txt') def aps_test(x): print(datetime.datetime.now().strftime('%Y-%m-%d %:H%M%S'), x) def date_test(x): print(datetime.datetime.now().strftime('%Y-%m-%d %:H%M%S'), x) print(1/0) def my_listener(event): if event.exception: print('出错??????') else: print('正常///////////') scheduler = BlockingScheduler() scheduler.add_job(func=date_test, args=('一次性出错任务',), next_run_time=datetime.datetime.now()+datetime.timedelta(seconds=15), id='date_task') scheduler.add_job(func=aps_test, args=('循环任务',), trigger='interval', seconds=3, id='interval_task') scheduler.add_listener(my_listener, EVENT_JOB_EXECUTED | EVENT_JOB_ERROR) scheduler._logger=logging scheduler.start()
这个报错是因为在logging.basicConfig()方法中,有一个格式字符串的语法错误,即datefmt参数的格式字符串中有一个“%”符号后面没有跟任何字符,应该把它改成“%H”。正确的格式字符串应该是'%Y-%m-%d %H:%M:%S'。修改后的代码如下:
```python
from apscheduler.schedulers.blocking import BlockingScheduler
from apscheduler.events import EVENT_JOB_EXECUTED, EVENT_JOB_ERROR
import datetime
import logging
logging.basicConfig(level=logging.INFO,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%Y-%m-%d %H:%M:%S', # 修改这里的格式字符串
filename='log1.txt',
filemode='a')
logging.FileHandler(encoding='utf-8', filename='log1.txt')
def aps_test(x):
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), x)
def date_test(x):
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), x)
print(1/0)
def my_listener(event):
if event.exception:
print('出错??????')
else:
print('正常///////////')
scheduler = BlockingScheduler()
scheduler.add_job(func=date_test, args=('一次性出错任务',),
next_run_time=datetime.datetime.now()+datetime.timedelta(seconds=15),
id='date_task')
scheduler.add_job(func=aps_test, args=('循环任务',), trigger='interval', seconds=3, id='interval_task')
scheduler.add_listener(my_listener, EVENT_JOB_EXECUTED | EVENT_JOB_ERROR)
scheduler._logger=logging
scheduler.start()
```
注意:如果你在使用这段代码时,日期时间格式不需要秒数,可以将datefmt参数改为'%Y-%m-%d %H:%M'。
阅读全文