python дата и время в формате времени - PullRequest
0 голосов
/ 13 февраля 2020

Я конвертирую время в формат datetime.time из моего кадра данных. Исходный формат времени выглядит так:

420, 441, 31, 158

примерно так. Так что в данных нет se c, есть только часы и минуты.

Я создал код для преобразования этого типа в формат datetime.time,

time = datetime.strptime(str(time, '%H%M').time()

. Он работает без ошибок. но во время анализа данных я понял, что что-то не так при применении кода.

Например, первоначально записанное время было 01:58, но в кадре данных он сохранил форму, как 158. Когда я применил код, он преобразует время до 15:08, что неверно по сравнению с исходным документом.

Но проблема заключается в том, что 01:58 и 15:08 сохранят форму в одном значении в кадре данных, поэтому , 158.

Итак, как бороться с этой проблемой? Похоже, что сейчас нет решения, за исключением того, что исходный документ необходимо сохранить в другом формате времени.

Ответы [ 2 ]

0 голосов
/ 13 февраля 2020
 import time

test=[420, 441, 31, 158]

string=str(test[2])

if len(string)<3:
    h=str(0)
    m=string[:]

else:
    h=string[:1]
    m=string[1:]

timesss=h+"/"+m

aa=time.strptime(timesss, '%H/%M')

ВЫХОД

print(aa) --> time.struct_time(tm_year=1900, tm_mon=1, tm_mday=1, tm_hour=0, tm_min=31, tm_sec=0, tm_wday=0, tm_yday=1, tm_isdst=-1)
print(aa[3]) --> 0
print(aa[4]) --> 31
print(type(aa)) --> <class 'time.struct_time'>
0 голосов
/ 13 февраля 2020

Это один подход, использующий str.zfill, при условии, что у вас есть 4 цифры.

Пример:

import datetime

data = ["420", "441", "31", "158"]

for time in data:
    print(datetime.datetime.strptime(time.zfill(4), '%H%M').time())

Выход:

04:20:00
04:41:00
00:31:00
01:58:00
...