36

我可以通过这种方式在 python 中创建日期时间对象:

import datetime

new_date= datetime.datetime(2012,09,16)

如何datetime从这种格式的字符串创建相同的对象:"16SEP2012"

4

2 回答 2

62

使用datetime.datetime.strptime

>>> datetime.datetime.strptime('16Sep2012', '%d%b%Y')
datetime.datetime(2012, 9, 16, 0, 0)
于 2013-09-08T13:48:55.827 回答
0

在这里添加的另一件事-日期时间格式

根据 OP 的要求,@falsetru 的回答都是正确且正确的,尽管我确实觉得有必要提及 DateTime 格式。

因此'%d%b%Y',作为参数给出的函数内部的这部分表示 DateTime 格式代码。您可以从此链接访问所有类型。提到所有类型的表格位于网页的底部。

例如,如果我们需要以字符串格式获取特定日期的 DateTime 对象。比方说:

>>> date = 'Sat 02 May 2015 19:54:36 +0000'

格式代码将类似于:

>>> from datetime import datetime
>>> date_now = datetime.strptime(date, '%a %d %b %Y %X %z')
>>> print(date_now)
2015-05-02 19:54:36+05:30

注意:由于字符串值之间有空格,所以我也给了空格。如果有 let's 连字符 (-),则可以改为:

>>> date1 = '22-May-2015 19:54:36'
>>> print(datetime.strptime(date1, '%d-%b-%Y %X'))
2015-05-22 19:54:36

现在,一旦您将字符串转换为日期时间对象,您就可以对它们执行过多的操作。一个很好的例子是,比如找出两个日期之间的差异:

>>> date1 = 'Sat 02 May 2015 19:54:36 +0530'
>>> date2 = 'Fri 01 May 2015 13:54:36 -0000'

>>> first = datetime.strptime(date1, '%a %d %b %Y %X %z')
>>> second = datetime.strptime(date2, '%a %d %b %Y %X %z')

>>> diff = first - second
>>> print(diff.total_seconds())
88200.0

我已经多次使用这个答案,但我通常总是不得不谷歌搜索其他日期时间格式。我希望这对其他人也有帮助。

于 2020-12-12T17:40:32.257 回答