我有一个字符串格式的日期。我想将其转换为所需的DateTime格式(mm-dd-yyyy)。这是我正在使用的代码:
from datetime import datetime
demoDate='03-25-17'
requiredDate = datetime.strptime(demoDate, '%m-%d-%y').strftime('%m-%d-%Y')
print(requiredDate)
print(type(requiredDate))
我得到的输出是:
03-25-2017
<class 'str'>
我是否可以获取所需的输出格式,但使用DateTime格式而不是字符串?
答案 0 :(得分:3)
摆脱对strftime
的呼叫。
from datetime import datetime
demoDate='03-25-17'
requiredDate = datetime.strptime(demoDate, '%m-%d-%y') # Note: this line changed, no strftime anymore
print(requiredDate)
print(type(requiredDate))
输出
2017-03-25 00:00:00
<class 'datetime.datetime'>
根据需要。
您还可以使用最初使用的代码以mm-dd-yyyy格式将其输出为字符串:
requiredDate = datetime.strptime(demoDate, '%m-%d-%y').strftime('%m-%d-%Y')
我认为您根据自己的评论将表示或视图与实际的抽象混淆了。
datetime
对象本身是一个抽象。。它表示日期。认为是03-25-17
还是2017-03-25
都没关系。是同一天。将其打成字符串也没关系(假设您正在使用将保留datetime对象语义的类上的方法)。 抽象日期本身保持不变。
另一方面,您可以将datetime
拍成字符串,然后使用datetime
类支持的任何格式在控制台中可视化此字符串。这包括mm-dd-yyyy或dd-mm-yyyy。这些是相同日期的不同表示形式。换句话说,我们可以可视化此日期抽象的许多表示形式或视图,但是我们只谈论一个抽象日期在这里。
因此,您不能要求有一个日期时间并确保始终将其表示为mm-dd-yyyy。那没有任何意义。
答案 1 :(得分:0)
代替:
requiredDate = datetime.strptime(demoDate, '%m-%d-%y').strftime('%m-%d-%Y')
您不需要strftime
:
requiredDate = datetime.strptime(demoDate, '%m-%d-%y')
那么它将是一个很好的datetime
对象