如何验证字符串是 RFC3339 格式的时间?

How to validate that a string is a time in RFC3339 format?

我有以下字符串 '2012-10-09T19:00:55Z',我想验证它是否采用 RFC3339 时间格式。

一种(错误的)方法是执行如下操作:

datetime.strptime('2012-10-09T19:00:55Z', '%Y-%m-%dT%H:%M:%S.%fZ')

这里的问题是这个 return 一个非时区感知对象,正如所指出的 here

知道如何实现吗?

我找到了这个解决方案:

from datetime import datetime

assert datetime.strptime('2012-10-09T19:00:55Z', '%Y-%m-%dT%H:%M:%S%z')
assert datetime.strptime('2012-10-09T19:00:55Z', '%Y-%m-%dT%H:%M:%S%z').tzinfo is not None

请注意字符串格式的细微差别。这确保日期时间对象是时区感知的。