2015-11-17 5 views
1

У меня есть сценарий, который возвращает объект DateTime как так:Как преобразовать временную часть объекта Python даты и времени к общему числу секунд, прошедших с начала дня

rec = record[14] #index 14 is a straight datetime object 
rec2 = rec.time() #sends time part to rec2 

Все, что я хочу сделать сейчас конвертировать rec2 в секунды целочисленного типа. Любое понимание того, как это сделать, было бы весьма полезно.

+0

секунд от какой точки отсчета? Можете ли вы показать нам свою продукцию? – khtad

+0

@khtad 14: 54: 02.547277 или 14:54:02. Может быть либо в зависимости от источника. – Dimpermanence

+0

Вам нужен формат «секунд с эпохи»? Также непонятно, какой тип 'rec.time()' возвращает? –

ответ

1

Как об этом:

rec2.hour*3600 + rec2.minute*60 + rec2.second 

Я также нашел это:

Get seconds since midnight in python

+0

Очевидно, что это хороший вопрос, потому что я чувствовал, что это довольно просто:) Я просто хочу преобразовать временную часть datetime в секунды. И эти секунды должны быть типа integer, а не string. – Dimpermanence

+0

Аргх ... Видишь, вот что я делаю, но это выглядит ... ну, свернуто. Не твоя, моя. Потому что у меня больше шагов, и через какое-то время это похоже на «c'mon, действительно?» – Dimpermanence

+0

Кажется, должен быть простой способ дать дату, чтобы получить секунды с полуночи, но я пока не нашел ничего лучше этого. – davejagoda

1

я «решил» эту головоломку раньше, приняв код с аналогичной question, хотя я действительно надеялся был более прямой путь. Я взял «нахальный» один лайнер @Nolen Royalty и завернул его в функцию int(). В сущности:

rec = record[14]  #stores index 14 of a list to rec which is a full datetime object 
rec2 = rec.time()  #stores time portion of that datetime object to rec2 
rec3 = rec2.strftime('%H:%M:%S') #uses strftime to convert to string 
s = int(sum(int(i) * 60**index for index, i in enumerate(rec3.split(":")[::-1]))) #converts that string to integer 

Сложный, но он работает ... все же, если у кого-то есть что-то лучше, я был бы очень заинтригован.

0

The question "Python Time conversion h:m:s to seconds" (that you've linked) показывает простое эффективное решение одной строки о том, как получить целое число секунд, прошедших с полуночи, который работает для обоих datetime.datetime и datetime.time типов:

from datetime import timedelta 

secs = timedelta(hours=rec.hour, minutes=rec.minute, seconds=rec.second).seconds