使用Python脚本,我需要读取一个CVS文件,其中日期格式为DD/MM/YYYY,并在将其保存到SQLite数据库之前将它们转换为YYYY-MM-DD.
这几乎可以工作,但因为我没有提供时间而失败:
from datetime import datetime lastconnection = datetime.strptime("21/12/2008", "%Y-%m-%d") #ValueError: time data did not match format: data=21/12/2008 fmt=%Y-%m-%d print lastconnection
我假设datetime对象中有一个方法可以很容易地执行此转换,但我找不到如何执行此操作的示例.谢谢.
你的示例代码是错误的.这有效:
import datetime datetime.datetime.strptime("21/12/2008", "%d/%m/%Y").strftime("%Y-%m-%d")
对strptime()的调用根据第二个参数中指定的格式解析第一个参数,因此这两个参数需要匹配.然后,您可以调用strftime()将结果格式化为所需的最终格式.
你首先需要将字符串转换为datetime元组,然后将该datetime元组转换为字符串,它将如下所示:
lastconnection = datetime.strptime("21/12/2008", "%d/%m/%Y").strftime('%Y-%m-%d')
还有没有其他人认为将这些字符串转换为日期/时间对象是一种浪费,最终这是一个简单的文本转换吗?如果您确定输入日期将是有效的,则可以使用:
>>> ddmmyyyy = "21/12/2008" >>> yyyymmdd = ddmmyyyy[6:] + "-" + ddmmyyyy[3:5] + "-" + ddmmyyyy[:2] >>> yyyymmdd '2008-12-21'
几乎可以肯定,这将比日期转换更快。