2012-03-30 17 views
-2

Mein Code:Konvertieren Integer in Datetime in 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 

Wie kann ich konvertieren start_val und end_val-datetime Objekte?

Antwort

3

Verwenden datetime.fromtimestamp(), da Ihre Werte erscheinen Minuten statt Sekunden zu sein, zuerst multiplizieren Sie sie mit 60:

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

Wenn Sie eine UTC-Zeit statt einer lokalen Zeit möchten, verwenden Sie 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) 

Ich bin nicht genau sicher, warum jeder von ihnen eine Minute nach dem, was Sie begonnen haben, Sie können immer 60 vor dem Anruf subtrahieren oder subtrahieren dt.timedelta(minutes=1) aus dem Endergebnis.

+1

Ich schätze, sie sind inklusive - sie enthalten die Minute, in der sie enden, anstatt zu Beginn dieser Minute zu enden. Andernfalls, wenn eine Reihe beendet und eine andere sofort begonnen hat, teilen sie sich die Start-/End-Minute. – agf

+0

Danke! F.J für die schnelle Antwort. – user1142937

+0

Kein Problem, wenn diese Lösung funktioniert, können Sie [akzeptieren] (http://meta.stackexchange.com/a/5235/155356), indem Sie auf die Umrandung des Häkchens neben der Antwort klicken. –

Verwandte Themen