检查日期字符串是否采用 UTC 格式

发布于 2024-11-25 00:57:29 字数 271 浏览 3 评论 0原文

我有一个日期字符串,如“2011-11-06 14:00:00+00:00”。有没有办法检查这是否采用 UTC 格式?我尝试使用 utc = datetime.strptime('2011-11-06 14:00:00+00:00','%Y-%m-%d %H: %M%S+%z) 这样我就可以将它与 pytz.utc 进行比较,但我得到 'ValueError: 'z' 是一个错误的格式指令'%Y-%m-%d %H:%M%S+%z'

如何检查日期字符串是否为 UTC?一些例子将非常感激。

谢谢

I have a date string like "2011-11-06 14:00:00+00:00". Is there a way to check if this is in UTC format or not ?. I tried to convert the above string to a datetime object using utc = datetime.strptime('2011-11-06 14:00:00+00:00','%Y-%m-%d %H:%M%S+%z) so that i can compare it with pytz.utc, but i get 'ValueError: 'z' is a bad directive in format '%Y-%m-%d %H:%M%S+%z'

How to check if the date string is in UTC ?. Some example would be really appreciated.

Thank You

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

说谎友 2024-12-02 00:57:29

一个简单的正则表达式就可以了:

>>> import re
>>> RE = re.compile(r'^\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}:\d{2}[+-]\d{2}:\d{2}
)
>>> bool(RE.search('2011-11-06 14:00:00+00:00'))
True

A simple regular expression will do:

>>> import re
>>> RE = re.compile(r'^\d{4}-\d{2}-\d{2}[ T]\d{2}:\d{2}:\d{2}[+-]\d{2}:\d{2}
)
>>> bool(RE.search('2011-11-06 14:00:00+00:00'))
True
哀由 2024-12-02 00:57:29

“采用 UTC 格式”实际上是指 ISO-8601 吗?。这是一个漂亮 常见 问题

By 'in UTC format' do you actually mean ISO-8601?. This is a pretty common question.

原来是傀儡 2024-12-02 00:57:29

格式字符串的问题在于 strptime 只是将解析时间字符串的工作传递给 c 的 strptime,并且不同风格的 c 接受不同的指令。在您的情况(似乎也是我的情况)中,不接受 %z 指令。

文档页面对此有一些含糊之处。 datetime.datetime.strptime文档指向 time.strptime其中不包含小写 %z 指令,并指示

某些平台可能支持其他指令,但只有此处列出的指令具有 ANSI C 标准化的含义。

但它也指向 此处 确实包含小写 %z,但重申

支持的全套格式代码因平台而异,因为 Python 调用平台 C 库的 strftime() 函数,并且平台变化很常见。

还有一个关于此问题的错误报告

The problem with your format string is that strptime just passes the job of parsing time strings on to c's strptime, and different flavors of c accept different directives. In your case (and mine, it seems), the %z directive is not accepted.

There's some ambiguity in the doc pages about this. The datetime.datetime.strptime docs point to the format specification for time.strptime which doesn't contain a lower-case %z directive, and indicates that

Additional directives may be supported on certain platforms, but only the ones listed here have a meaning standardized by ANSI C.

But then it also points here which does contain a lower-case %z, but reiterates that

The full set of format codes supported varies across platforms, because Python calls the platform C library’s strftime() function, and platform variations are common.

There's also a bug report about this issue.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文