2016-04-12 11 views
0

In meinem Python-Code beginne ich bekommen und Endzeit soetwas wie:konvertieren Zeit in druckbare oder Localtime-Format

end = int(time.time()) 
start = end - 1800 

Jetzt beginnen und enden Variablen hält Werte wie 1460420758 und 1460422558.

Ich versuche, konvertiert sie in einem sinnvollen Format wie:

Mon Apr 11 17:50:25 PDT 2016 

aber sind nicht in der Lage, dies zu tun, habe ich versucht:

time.strftime("%a %b %d %H:%M:%S %Y", time.gmtime(start)) 

Gibt mir

Tue Apr 12 00:25:58 2016 

Aber nicht nur die Zeitzone, aber der H: M: S ist falsch

Als Datum mir die folgenden Informationen zurück:

$ date 
Mon Apr 11 18:06:27 PDT 2016 

Wie es zu korrigieren ?

+1

Haben Sie Pytz für Zeitzonenmanagement in Betracht gezogen? http://pytz.sourceforge.net/ Es ist sehr schwierig zu wissen, was passiert, basierend auf dem von Ihnen bereitgestellten Code. Nicht sicher, ob Sie von Zeit zu Datum wechseln, usw. – Adib

+0

>>> Zeit importieren >>> int (time.time()) >>> time.gmtime (1460423923) time.struct_time (tm_year = 2016, tm_mon = 4, tm_mday = 12, tm_hour = 1, tm_min = 18, tm_sec = 43, tm_wday = 1, tm_yday = 103, tm_isdst = 0) >>> quit() $ date Mo Apr 11 18: 19:24 PDT 2016 – Prakash

Antwort

0

In diesem Fall verwenden Sie datetime, um das gewünschte Format mit dem strftime-Modul zu erzielen.

Was wichtig ist, ist, dass die Zeitinformation, die Sie bekommen, 'UTC' sein muss, um dies zu tun. Sonst sind Sie verloren D:

Ich benutze Timedelta, um Stunden zu der Zeit hinzuzufügen. Es wird auch das Datum erhöht. Ich würde immer noch empfehlen, das oben erwähnte Modul zu verwenden, um Zeitzonen zu behandeln.

import time 

# import datetime so you could play with time 
import datetime 

print int(time.time()) 
date = time.gmtime(1460420758) 

# Transform time into datetime 
new_date = datetime.datetime(*date[:6]) 

new_date = new_date + datetime.timedelta(hours=8) 

# Utilize datetime's strftime and manipulate it to what you want 
print new_date.strftime('%a %b %d %X PDT %Y')