如何解析 ISO 字符串?

How to parse ISO string?

它没有被解析,只是打印出我试图解析的相同 ISO 字符串:2/12/17 00:00:52

我做错了什么?提前谢谢你,一定会投票并接受答案

你是什么意思它没有解析...它解析了但是你要求再次打印出来它把它变回一个字符串:

>>> import dateutil.parser
>>> date = dateutil.parser.parse("2017-02-16 22:11:05+00:00")
>>> repr(date)
'datetime.datetime(2017, 2, 16, 22, 11, 5, tzinfo=tzutc())'
>>> date.timetuple()
time.struct_time(tm_year=2017, tm_mon=2, tm_mday=16, tm_hour=22, 
                 tm_min=11, tm_sec=5, tm_wday=3, tm_yday=47, tm_isdst=0)
>>> str(date)
2017-02-16 22:11:05+00:00

发生这种情况是因为 datetime 变量的表示(即 dateutil.parser.parse 的结果)is to print the ISO representation of the date.

但是,如果您存储变量而不是在解析后简单地打印它,则可以打印日期的每个单独部分:

date = dateutil.parser.parse("2017-02-16 22:11:05+00:00")
print(date.year)
2017

print(date.month)
2

print(date.day)
16

print(date.hour)
22

print(date.minute)
11

print(date.second)
5

干杯!

我将可耻地插入我用于日期时间的库,pendulum

import pendulum

parsed_time = pendulum.parse('2017-02-16 22:11:05+00:00')

parsed_time.to_formatted_date_string()
'Feb 16, 2017'

还有更多选项,让处理日期时间变得超级简单。

如果只想打印年、月、日、时、分、秒,可以这样做:

x=dateutil.parser.parse("2017-02-16 22:11:05+00:00")
print ("<%s>") % (x.strftime('%Y-%m-%d at %H:%M:%S'))
# Output <2017-02-16 at 22:11:05>