跨月边界的日期时间戳

datetime timestamp crossing month boundaries

我正在为从今天开始连续几天的中午创建一系列时间戳。这工作正常,除了从 9 月开始尝试越过边界时:

import time
from datetime import date, timedelta, datetime

today = datetime.today()
str_date = today.strftime('%Y%m%d')
int_date = int(str_date)

for i in range(0, 7):

    run_date = str(int_date + int(i))
    string_datetime = ''.join((str(run_date), '120000'7))
    timestamp = datetime.strptime(string_datetime, '%Y%m%d%H%M%S').timestamp()
    t = str(timestamp).replace('.0', '')
    print(run_date, t)

在这种情况下,我得到以下错误:

Traceback (most recent call last):
  File "G:/myfolder/myfile.py", line 12, in <module>
    timestamp = datetime.strptime(string_datetime, '%Y%m%d%H%M%S').timestamp()
  File "G:\Python36\lib\_strptime.py", line 565, in _strptime_datetime
    tt, fraction = _strptime(data_string, format)
  File "G:\Python36\lib\_strptime.py", line 528, in _strptime
    datetime_date(year, 1, 1).toordinal() + 1
ValueError: day is out of range for month

我的代码需要修改什么?

目前还不完全清楚您要对字符串操作做什么,但是您有一个 datetime 对象,正确的递增方法是使用 timedelta 对象,如下所示。你想做些不同的事情吗?

from datetime import datetime, timedelta

today = datetime.today()
print(today)

for additional_days in range(1, 7):
    new_day = today + timedelta(days=additional_days)
    print(new_day)

结果:

2020-09-28 12:55:40.155671
2020-09-29 12:55:40.155671
2020-09-30 12:55:40.155671
2020-10-01 12:55:40.155671
2020-10-02 12:55:40.155671
2020-10-03 12:55:40.155671
2020-10-04 12:55:40.155671