将datetime字符串转为整数时出现无效字面量错误的问题
问题解决:datetime转Unix时间报错ValueError
错误原因
你代码里的date_time_h = now.strftime("%hr")用错了strftime格式符:
%h是月份的英文缩写(比如7月会输出Jul),加上后面的r就会生成Julr这种非数字字符串,转int时触发ValueError。- 要获取小时应该用
%H(24小时制,00-23)或者%I(12小时制,01-12)。
修正后的代码
没必要拆分datetime再重组,直接对当前时间做运算更简洁:
from datetime import datetime, timedelta import time now = datetime.now() # 直接对当前时间减12小时,不用拆分字段再拼接 date_time = now.replace(minute=0, second=0) - timedelta(hours=12) # 转换为Unix时间戳 unix_time = round(time.mktime(date_time.timetuple()))
如果一定要保留拆分字段的写法,修正小时的格式符即可:
from datetime import datetime, timedelta import time now = datetime.now() date_time_d = now.strftime("%d") date_time_m = now.strftime("%m") date_time_y = now.strftime("%Y") # 这里改成%H(24小时制) date_time_h = now.strftime("%H") date_time = datetime(int(date_time_y), int(date_time_m), int(date_time_d), int(date_time_h), 0, 0) - timedelta(hours=12) unix_time = round(time.mktime(date_time.timetuple()))
内容的提问来源于stack exchange,提问作者ensea
相关产品推荐
相关产品推荐

