У меня есть объект datetime.time как 02:00:00, я хотел бы преобразовать его в общее количество секунд, которое должно составлять 7200 секунд.

-1
StackUser 13 Июл 2021 в 11:39

3 ответа

Лучший ответ

Вы можете комбинировать время с контрольной датой, чтобы получить объект datetime. Если вы затем вычтите эту контрольную дату, вы получите объект timedelta, из которого вы можете взять total_seconds:

from datetime import datetime, time

t = time(2,0,0)

ts = (datetime.combine(datetime.min, t) - datetime.min).total_seconds()

print(ts)
# 7200.0

С pandas я бы использовал строковое представление столбца объекта времени (Series) и преобразовал его в тип данных timedelta, который затем позволяет вам использовать метод доступа dt для получения общего количества секунд:

import pandas as pd

df = pd.DataFrame({'time': [time(2,0,0)]})

df['totalseconds'] = pd.to_timedelta(df['time'].astype(str)).dt.total_seconds()

# df['totalseconds']
# 0    7200.0
# Name: totalseconds, dtype: float64
3
MrFuppes 13 Июл 2021 в 09:45

Вы можете рассчитать с помощью библиотеки datetime

def time_in_ms():
    from datetime import datetime
    now = datetime.now()
    time_arr = now.strftime("%H:%M:%S").split(":")
    total_time = (int(time_arr[0]) * 3600) + (int(time_arr[1]) * 60) +(int(time_arr[2]))
    return total_time
0
yunus 13 Июл 2021 в 09:05

Попробуйте этот метод; параметр "время" должен иметь формат чч: мм: сс.

def convert_to_seconds(time):
    # Separate all symbols of 'time'
    separated = list(time)
    
    # Delete all ':' symbols
    for i in separated:
        if i == ':':
            separated.remove(i)
    
    # Join the elements of the list together two by two
    separated[0] = separated[0] + separated[1]
    separated[1] = separated[2] + separated[3]
    separated[2] = separated[4] + separated[5]
    
    # Delete the last 3 elements of the list that are useless now
    for count in range(3):
        del l[3]
    
    # Convert to integers
    for i in separated:
        separated[separated.index(i)] = int(i)

    # Calculate seconds
    seconds = 0
    seconds += separated[0] * 3600
    seconds += separated[1] * 60
    seconds += separated[2]

    return seconds

Он немного длиннее, чем предыдущий метод, но немного проще для понимания.

0
Lvn Rtg 13 Июл 2021 в 09:33