在Python中解析时间戳

2024-04-19 03:21:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个应用程序,我需要解析四种不同格式的时间戳。在

HH:MM:SS
HH:MM:SS.mm
MM:SS
MM:SS.mm

如何编写一个函数来将这些格式解析为timedelta对象?在

我尝试过逐个迭代字符,当我看到:时,break进行迭代,但是我的代码一团糟,所以我宁愿不把它作为基线。在


Tags: 对象函数代码应用程序格式hh时间字符
1条回答
网友
1楼 · 发布于 2024-04-19 03:21:48

下面是一种使用datetime.datetime.strptime()完成此操作的方法:

如果您事先不知道您的输入将在哪个format中,可以尝试将它们全部包装在try/catch块中。在

strptime()返回一个datetime对象,因此调用.time()函数只获取时间部分。有关详细信息,请参见this post。在

import datetime

def parse_timestamp(ts):
    formats = [
        "%H:%M:%S", #HH:MM:SS
        "%H:%M:%S.%f", #HH:MM:SS.mm
        "%M:%S", #MM:SS
        "%M:%S.%f" #MM:SS.mm
    ]
    for f in formats:
        try:
            return datetime.datetime.strptime(ts, f).time()
        except ValueError:
            pass
    return None

示例:

^{pr2}$

输出:

12:34:56
12:34:56.780000
00:34:56
00:34:56.780000

或者,如果您知道具体的格式,您可以直接使用datetime.datetime.strptime(ts, f).time()。在

更新1

如果要转换为timedelta,可以使用parse_timestamp()的输出和^{} constructor进行转换:

def time_to_timedelta(t):
    td = datetime.timedelta(
        seconds=t.second,
        microseconds=t.microsecond,
        minutes=t.minute,
        hours=t.hour
    )
    return td

这里有一个related post,你可能也会觉得有用。在

相关问题 更多 >