如何在python中剥离日期时间

时间:2019-07-18 12:45:51

标签: python datetime

我从一个网站上获得这样的日期:Sun Jan 22 21:32:58 +0000 2012。我了解我必须摆脱+0000才能将其转换为日期,但是我该怎么做呢?我阅读了文档,但是我的代码不起作用:

from datetime import datetime
strDate = 'Mon Apr 29 14:30:53 2019'
objDate = datetime.strptime(strDate, '%a %b %H %M %S %Y')

我遇到错误:

ValueError: time data 'Mon Apr 29 14:30:53 2019' does not match format '%d %m %H %M %S %Y'

我真的不明白为什么。还是有人知道如何从Sun Jan 22 21:32:58 +0000 2012获取日期?

6 个答案:

答案 0 :(得分:1)

如果您的对象是datetime.datetime,则只需执行date()

from datetime import datetime
datetime1 = datetime.now() 
date1 = datetime1.date()

答案 1 :(得分:1)

恐怕 seralouk 目前接受的答案是不正确的。使用 "+%f" 将数字转换为几分之一秒。 0000 没问题,但如果它们碰巧是别的东西,就会把事情搞砸。

这是因为“+0000”部分是时区偏移量,正确的解析方法是使用“%z”指令,该指令也将处理“+”号,因此将其从格式字符串:

>>> date_string = "Sun Jan 22 21:32:58 +0000 2012"
>>> datetime.strptime(date_string, "%a %b %d %H:%M:%S %z %Y")
datetime.datetime(2012, 1, 22, 21, 32, 58, tzinfo=datetime.timezone.utc)

答案 2 :(得分:0)

单行解决方案:

strDate ='Sun Jan 22 21:32:58 +0000 2012'
objDate = datetime.strptime(strDate, '%a %b %d %H:%M:%S +%f %Y')

print(objDate)
#2019-04-29 14:30:53

详细信息:

您只是忘了使用%d来捕获日期数字和:的时间,并且还需要捕获+0000

证明:

https://en.wikipedia.org/wiki/Argon2#Algorithm

答案 3 :(得分:0)

您可以像这样摆脱“ +0000”:

from datetime import datetime
strDate ='Sun Jan 22 21:32:58 +0000 2012' 
objDate = datetime.strptime(strDate.replace(strDate.split(" ")[4] + " ", ""), '%a %b %d %H:%M:%S %Y')

print(objDate)
-> 2012-01-22 21:32:58

顺便说一句

1。。您发布的代码示例并非所要解决的问题! (它不包含字符串中的+0000)。

2。。您共享的错误(错误的日期格式,已经得到答案并在f.ex. here中进行了描述)是另一种代码,而不是您自己的代码目前以上! (错误抛出'%d%m%H%M%S%Y'而不是'%a%b%H%M%S%Y')。

答案 4 :(得分:-1)

您缺少冒号:和日期格式字符串%d。有关显示不同格式值的表格,请参见strptime的官方documentation

from datetime import datetime
strDate = 'Mon Apr 29 14:30:53 2019'
objDate = datetime.strptime(strDate, '%a %b %d %H:%M:%S %Y')

答案 5 :(得分:-1)

在您的字符串中,您缺少%d以赶上每月的01-31

'%a %b %d %H:%M:%S %Y'

如果您还想捕获+0000,则必须使用%z表示法

将此作为参考以正确构建您的字符串: http://strftime.org/