转换为特定格式的小时和时间

2024-04-25 20:21:23 发布

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

我一直在尝试将以下时间格式8.25 (fractional hours)更改为8.15 meaning 8:15。和{}到{}。问题是我特别需要这种格式(timedelta)e.g 17.45,用点.代替:


Tags: 格式时间timedeltafractionalhoursmeaning用点
2条回答

给定格式为HH.MM的字符串,可以按如下方式处理:

my_time = "17.75"
hours, minutes = my_time.split(".")  # (17, 75)
minutes_converted = round(float(minutes) / 100 * 60)  # 45
my_time_converted = "{}.{}".format(hours, minutes_converted)  #17.45
print(my_time_converted)

> 17.45

这可以通过使用分数小时的适当表示法来方便地实现,即timedelta。如果输入为数据类型字符串,请首先转换为浮点

Ex:

from datetime import datetime, timedelta

for td in [8.25, 17.75]:
    # add the duration as timedelta to an arbitrary date to get a time object:
    print((datetime(2020,1,1) + timedelta(hours=td)).time())
08:15:00
17:45:00

使用pandas,这可能看起来像

import pandas as pd

s = pd.Series([8.25, 17.75])

refDate = '2020-01-01' # need a date..

t = pd.Timestamp(refDate) + pd.to_timedelta(s, unit='h')

print(t)

# 0   2020-01-01 08:15:00
# 1   2020-01-01 17:45:00
# dtype: datetime64[ns]

print(t.dt.time)

# 0    08:15:00
# 1    17:45:00
# dtype: object

相关问题 更多 >

    热门问题