2016-08-26 1 views
1

ich einen Unix-Zeitstempel in Sekunden (wie 1294778181), die ich zu UTCWie erhalte ich in Python einen lokalisierten Zeitstempel nur mit dem Datetime-Paket?

mit umwandeln kann
from datetime import datetime 
datetime.utcfromtimestamp(unix_timestamp) 

Problem ist, würde ich die entsprechende Zeit, um in 'US/Eastern' gerne (jede DST bedenkt) und ich kann nicht verwenden pytz und andere Dienstprogramme.

Nur datetime steht mir zur Verfügung.

Ist das möglich? Danke!

+3

Sie könnten Ihre eigene Funktion schreiben, die hinzufügen/subtrahieren würde timedelta – iScrE4m

+1

yeah Ich möchte das vermeiden, denn dann müssen Sie den richtigen Offset verfolgen, richtig? –

+1

Yah, aber ich kann mir keinen anderen Weg vorstellen:/Du könntest immer Deinen eigenen Pytz schreiben: D https://github.com/newvem/pytz/tree/master/pytz – iScrE4m

Antwort

1

einfachste, aber nicht supersmart Lösung wird mit Timedelta

import datetime 
>>> now = datetime.datetime.utcnow() 

US/Eastern 5 Stunden hinter UTC ist, so lassen Sie sich nur thouse 5 Stunden als Timedelta-Objekt erstellen und es negativ machen, so dass beim Lesen zurück unser Code können wir sehen, dass die -5 versetzt ist und dass keine Magie gibt es zu der Entscheidung, wann hinzuzufügen und wenn Zeitzone

>>> eastern_offset = -(datetime.timedelta(hours=5)) 
>>> eastern = now + eastern_offset 
>>> now 
datetime.datetime(2016, 8, 26, 20, 7, 12, 375841) 
>>> eastern 
datetime.datetime(2016, 8, 26, 15, 7, 12, 375841) 

versetzt zu subtrahieren Wenn wir beheben DST wollten wir die Datetime durch smoething wie gerannt das (nicht ganz genau, Zeitzonen sind nicht meine e Xpertise (googeln etwas jetzt ist es ändert sich jedes Jahr, igitt))

if now.month > 2 and now.month < 12: 
    if (now.month == 3 and now.day > 12) or (now.month == 11 and now.day < 5): 
     eastern.offset(datetime.timedelta(hours=5)) 

Sie noch mehr ins Detail gehen könnte, Stunden hinzufügen, herauszufinden, wie genau ändert es jedes Jahr ... Ich werde nicht gehen durch all das :)

+0

toll, aber berücksichtigt dies DST? –

+1

Leider nicht. Es könnte behoben werden, wenn die Bedingungen eine andere Stunde Offset haben, wenn das Datum ein Datum ohne ein Jahr ist zwischen zwei anderen Datumsangaben – iScrE4m

+1

@Noobie Ich bearbeitete meine Antwort mit einer breiten Idee, wie man DST macht, aber es ist ziemlich kompliziert, wenn Sie es wollen sei immer genau. Deshalb haben wir Pytz – iScrE4m

Verwandte Themen