Python:将自由文本转换为日期

4 投票
3 回答
1733 浏览
提问于 2025-04-15 14:11

假设这些文字是在同一个(以色列)时区同时输入的,下面这些自由文本行是等价的:

Wed Sep  9 16:26:57 IDT 2009
2009-09-09 16:26:57
16:26:57
September 9th, 16:26:57

有没有一个Python模块可以把这些文本日期转换成一个(完全相同的)datetime.datetime实例?

我想在一个命令行工具中使用它,这个工具可以接收一个自由格式的日期和时间作为参数,然后返回不同时间区的等价日期和时间,比如:

~$wdate 16:00 Israel
Israel:        16:00
San Francisco: 06:00
UTC:           13:00

或者:

~$wdate 18:00 SanFran
San Francisco  18:00:22
Israel:        01:00:22 (Day after)
UTC:           22:00:22

有没有什么好主意?

谢谢,

Udi

3 个回答

0

你可以使用 time.strptime 这个功能。

用法如下:

time.strptime("2009-09-09 16:26:57", "%Y-%m-%d %H:%M:%S")

它会返回一个叫做 struct_time 的值(更多信息可以查看 Python 的文档页面)。

6

python-dateutil 这个包听起来很有用。你给的例子只用了简单的小时:分钟格式的时间戳,并且用了一种(神奇缩短的)城市标识符,但它似乎也能处理问题中提到的那些更复杂的格式。

3

parsedatetime 这个模块看起来非常适合处理这个特定的任务。

撰写回答