当前位置:  开发笔记 > 编程语言 > 正文

在DD/MM/YYYY和YYYY-MM-DD之间转换日期?

如何解决《在DD/MM/YYYY和YYYY-MM-DD之间转换日期?》经验,为你挑选了3个好方法。

使用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对象中有一个方法可以很容易地执行此转换,但我找不到如何执行此操作的示例.谢谢.



1> unwind..:

你的示例代码是错误的.这有效:

import datetime

datetime.datetime.strptime("21/12/2008", "%d/%m/%Y").strftime("%Y-%m-%d")

对strptime()的调用根据第二个参数中指定的格式解析第一个参数,因此这两个参数需要匹配.然后,您可以调用strftime()将结果格式化为所需的最终格式.



2> SilentGhost..:

你首先需要将字符串转换为datetime元组,然后将该datetime元组转换为字符串,它将如下所示:

lastconnection = datetime.strptime("21/12/2008", "%d/%m/%Y").strftime('%Y-%m-%d')



3> paxdiablo..:

还有没有其他人认为将这些字符串转换为日期/时间对象是一种浪费,最终这是一个简单的文本转换吗?如果您确定输入日期将是有效的,则可以使用:

>>> ddmmyyyy = "21/12/2008"
>>> yyyymmdd = ddmmyyyy[6:] + "-" + ddmmyyyy[3:5] + "-" + ddmmyyyy[:2]
>>> yyyymmdd
'2008-12-21'

几乎可以肯定,这将比日期转换更快。


如果您担心转换日期的速度,那么您显然无须担心。unwind发布的代码比您的代码更加清晰和可维护。这应该是您的主要关注点,而不是速度。
推荐阅读
郑小蒜9299_941611_G
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有