我正在使用 psycopg2 将 csv 文件中的值插入到 postgres 数据库中。每次从 csv 文件中读取新行时,我都需要将开始时间增加 6 小时。我正在尝试通过以下方式实现这一目标:
date_product_str = '2015-03-05 12:00:00'
date_product = datetime.datetime.strptime(date_product_str, "%Y-%m-%d %H:00:00").date()
date_valid = date_product
interval = datetime.timedelta(hours=6)
id_location=38
in_file = open("inform_values.csv", "r")
while True:
line = in_file.readline()
if not line: break
tokens = line.split(",")
for i in range (1, 140):
cur.execute("INSERT INTO inform_tseries_data_basin_proc_fcst_prob_flow (date_product, date_valid, id_location, id_member, value) VALUES (%s, %s, %s, %s, %s)", (date_product, date_valid, id_location, i, tokens[i]))
date_valid = date_valid + interval
print date_valid
conn.commit()
cur.close()
conn.close()
但这只是在每一步打印出 2015-03-05。当我将间隔设置为 1 天时:
interval = datetime.timedelta(days=1)
它按预期一天递增。为什么几个小时都不工作?
最佳答案
date
对象没有小时、分钟、秒或微秒的概念 - 只有年、月和日。在 date + timedelta
算法中 - 正如文档所说 - “timedelta.seconds
和 timedelta.microseconds
被忽略。”
如果您需要计算小时数,则需要一个 datetime
对象。如果您从 date_product
初始化中删除尾随的 .date()
提取器,您将会拥有。
关于python - 时间未添加到 Python 中的日期对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37980560/