Jam*_*rds 2 python datetime timestamp
我有一个应用程序,需要解析四种不同格式的时间戳。
HH:MM:SS
HH:MM:SS.mm
MM:SS
MM:SS.mm
Run Code Online (Sandbox Code Playgroud)
如何编写一个函数来将这些格式解析为timedelta对象?
我尝试过逐一迭代字符,并break在看到 时进行 ing :,但我的代码很混乱,所以我宁愿不将其放在这里作为基线。
这是一种使用以下方法来做到这一点的方法datetime.datetime.strptime():
如果您事先不知道输入将采用哪种格式try,您可以尝试将所有这些格式都包含在/catch块中。
strptime()返回一个datetime对象,因此调用该.time()函数仅获取时间部分。请参阅这篇文章了解更多详细信息。
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
Run Code Online (Sandbox Code Playgroud)
例子:
timestamps = [
"12:34:56",
"12:34:56.78",
"34:56",
"34:56.78"
]
for ts in timestamps:
print parse_timestamp(ts)
Run Code Online (Sandbox Code Playgroud)
输出:
12:34:56
12:34:56.780000
00:34:56
00:34:56.780000
Run Code Online (Sandbox Code Playgroud)
或者如果你知道具体格式,也可以datetime.datetime.strptime(ts, f).time()直接使用。
更新1
如果您想转换为timedeltas,可以使用parse_timestamp()和timedelta构造函数的输出来执行此操作:
def time_to_timedelta(t):
td = datetime.timedelta(
seconds=t.second,
microseconds=t.microsecond,
minutes=t.minute,
hours=t.hour
)
return td
Run Code Online (Sandbox Code Playgroud)
这是一篇相关文章,您可能也会觉得有用。
| 归档时间: |
|
| 查看次数: |
3723 次 |
| 最近记录: |