Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 转换为特定格式的小时和时间_Python_Python 3.x_Time_Timedelta - Fatal编程技术网

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

Python 转换为特定格式的小时和时间,python,python-3.x,time,timedelta,Python,Python 3.x,Time,Timedelta,我一直在尝试将以下时间格式8.25(分数小时)更改为8.15,意思是8:15。和17.75到17.45表示17:45。问题是,我特别需要该格式(timedelta),例如17.45,带有一个点,而不是:鉴于您的格式字符串HH.MM,您可以按如下方式进行处理: my_time = "17.75" hours, minutes = my_time.split(".") # (17, 75) minutes_converted = round(float(mi

我一直在尝试将以下时间格式
8.25(分数小时)
更改为
8.15,意思是8:15
。和
17.75
17.45表示17:45
。问题是,我特别需要该格式(timedelta)
,例如17.45
,带有一个点
,而不是

鉴于您的格式字符串
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
使用熊猫,看起来像

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

提示:
60*.75=45
…删除了
pandas
标记,因为它不相关。问题不清楚所有文本的类型。它告诉了我们一些关于一种格式的东西,但只显示了一些令人困惑的例子。@Wolf:我认为这里的要点是像
17.75
这样的数字不是时间格式,而是小数小时,即持续时间(在Python中用
timedelta
表示)。我在Dave的网站上发布了一个方法。在这里集成不是更容易理解吗?非常感谢。它可以正常工作,但现在的问题是我还需要其他格式,比如
17:45
,而不仅仅是
17.45
。我试图修改上面的代码,但也不起作用。鉴于
my_time=“17.75”
中的值仅为该形式。@Dave您实际上只需要将上述代码中的
{}.{}
更改为
{}:{}
。@deceze OP认为两者都需要。。。这是一个非常令人困惑(和沮丧)的案例,我们被拒绝提供真正有用的细节!