将日期从字符串转换为python中所需的DateTime格式

时间:2018-09-12 00:18:33

标签: python string python-3.x datetime

我有一个字符串格式的日期。我想将其转换为所需的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格式而不是字符串?

2 个答案:

答案 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对象