2012-03-30 3 views
-2

Мой код:Преобразование целого числа в DateTime в Python

import datetime as dt 
import scikits.timeseries as ts 

ts_start_datetime= ts.Date(freq='T',year=2011,month=1,day=1,hour= 0,minute=0) 
ts_end_datetime = ts.Date(freq='T',year=2011,month=12,day=31,hour=23,minute=45) 

start_val = ts_start_datetime.value 
# 21564001 
end_val = ts_end_datetime.value 
# 22089586 

Как конвертировать start_val и end_val к datetime объектов?

ответ

3

Использование datetime.fromtimestamp(), так как ваши значения кажутся минуты, а не секунды, первым умножить их на 60:

start_dt = dt.datetime.fromtimestamp(start_val * 60) 
end_dt = dt.datetime.fromtimestamp(end_val * 60) 

Если вы хотите время UTC вместо локального времени, используйте datetime.utcfromtimestamp():

>>> dt.datetime.utcfromtimestamp(21564001 * 60) 
datetime.datetime(2011, 1, 1, 0, 1) 
>>> dt.datetime.utcfromtimestamp(22089586 * 60) 
datetime.datetime(2011, 12, 31, 23, 46) 

Я не совсем уверен, почему каждый из них на одну минуту после того, с чего вы начали, вы всегда можете вычесть 60 перед вызовом или вычесть dt.timedelta(minutes=1) из конечного результата.

+1

Я предполагаю, что они включены - они включают в себя минуту, в которой они заканчиваются, а не заканчиваются в самом начале той минуты. В противном случае, если один диапазон закончился, а другой сразу начнется, они разделили бы начальную/конечную минуту. – agf

+0

Спасибо! F.J для быстрого ответа. – user1142937

+0

Нет проблем, если это решение работает, вы можете [принять его] (http://meta.stackexchange.com/a/5235/155356), щелкнув контур галочки рядом с ответом. –

Смежные вопросы