【问题标题】: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 对象能够识别时区。

【讨论】:

  • 相关:stackoverflow.com/questions/522251/… - 我认为您的格式代码有点严格 ;-) 也许 regex 会是一种更简洁的方法来验证字符串是否符合 RFC3339 ?
  • 谢谢,我会调查的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-25
  • 2019-04-16
  • 1970-01-01
  • 1970-01-01
  • 2016-09-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多