102

我有一个数据集,其中所有日期都具有以下格式:

2012-10-09T19:00:55Z

我希望能够.weekday在它们上使用类似的方法。如何在 Python 中将它们转换为正确的格式?

4

3 回答 3

169

您可以使用dateutil.parser.parse(install with python -m pip install python-dateutil) 将字符串解析为日期时间对象。

dateutil.parser.parse将尝试猜测您的字符串的格式,如果您事先知道确切的格式,那么您可以使用datetime.strptime您提供格式字符串的格式(请参阅 Brent Washburne 的回答)。

from dateutil.parser import parse

a = "2012-10-09T19:00:55Z"

b = parse(a)

print(b.weekday())
# 1 (equal to a Tuesday)
于 2014-04-24T18:50:09.160 回答
92

这已经在这里得到了回答:如何将 ISO 8601 日期时间字符串转换为 Python 日期时间对象?

d = datetime.datetime.strptime( "2012-10-09T19:00:55Z", "%Y-%m-%dT%H:%M:%SZ" )
d.weekday()
于 2014-04-24T18:52:10.550 回答
10

你应该看看moment哪个是优秀的 js lib 的 python 端口momentjs

它的一个优点是支持ISO 8601字符串格式,以及通用的 "% format" :

import moment
time_string='2012-10-09T19:00:55Z'

m = moment.date(time_string, '%Y-%m-%dT%H:%M:%SZ')
print m.format('YYYY-M-D H:M')
print m.weekday

结果:

2012-10-09 19:10
2
于 2014-10-07T12:35:34.173 回答