【问题标题】:How to validate that a string is a time in RFC3339 format?如何验证字符串是 RFC3339 格式的时间?
【发布时间】:2020-10-27 02:06:23
【问题描述】:
我有以下字符串 '2012-10-09T19:00:55Z',我想验证它是否采用 RFC3339 时间格式。
一种(错误的)方法是执行以下操作:
datetime.strptime('2012-10-09T19:00:55Z', '%Y-%m-%dT%H:%M:%S.%fZ')
这里的问题是这会返回一个非时区感知对象,正如here 指出的那样。
知道如何实现这一目标吗?
【问题讨论】:
标签:
python
date
validation
timezone
rfc3339
【解决方案1】:
我找到了这个解决方案:
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
注意字符串格式的细微差别。这样可以确保 datetime 对象能够识别时区。