跨月边界的日期时间戳
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
我正在为从今天开始连续几天的中午创建一系列时间戳。这工作正常,除了从 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