首页 > 解决方案 > ValueError:不能这么早格式化日期

问题描述

我正在尝试使用ITASKDEFINITION获取计划任务的下一次运行时间,但在获取 NextRunTime 时遇到问题我收到错误消息

Traceback (most recent call last):
  File "WSTC.py", line 34, in <module>
    print('NextRun    : %s\n' % task.NextRunTime)
ValueError: can't format dates this early

这是示例代码:

import win32com.client

TASK_ENUM_HIDDEN = 0
TASK_STATE = {0: 'Unknown',
              1: 'Disabled',
              2: 'Queued',
              3: 'Ready',
              4: 'Running'}

scheduler = win32com.client.Dispatch('Schedule.Service')
scheduler.Connect()

folders = [scheduler.GetFolder('\\')]
n = 0
while folders:
    folder = folders.pop(0)
    folders += list(folder.GetFolders(0))
    tasks = list(folder.GetTasks(TASK_ENUM_HIDDEN))

    for task in tasks:
        settings = task.Definition.Settings
        if TASK_STATE[task.State] == 'Running':
            print('Path       : %s' % task.Path)
            print('State      : %s' % TASK_STATE[task.State])
            print('NextRun    : %s\n' % task.NextRunTime)
            n += 1
print ('Listed %d tasks.' % n)

非常感谢您对此的任何帮助或帮助。谢谢!

标签: pythonwindowspywin32taskscheduler

解决方案


在深入挖掘并阅读此错误之后。似乎这个问题只存在于早期版本的 python 中(我使用的是 Python 2.7)。我尝试将 python 升级到最新版本,它返回的日期小于 1900 年,并且不再引发 ValueError 异常。

来源: 1 2


推荐阅读