Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Zeitkonvertierung von UTC in die entsprechende Lokalzeit

87 views
Skip to first unread message

andreas...@googlemail.com

unread,
Feb 8, 2008, 10:48:59 AM2/8/08
to
Hallo,

folgendes Problem:
Ich habe Strings, die eine Zeit in UTC (Weltzeit) angeben z.B. :
"2008-01-15 22:32:30"
Desweiteren habe ich einen String, der die Zeitzone angibt, z.B:
"-05:00".

Ich will nun die entsprechende Lokalzeit rausfinden. Das Datum ist
dabei unwichtig,
wichtig ist die Uhrzeit. In welchem Format die geliefert wird ist mir
weitgehend gleichgültig.
Die Lösung einfach in diesem Falle -5 mit 22 zu addieren liefert nicht
immer das richtige Ergebnis, da die DST, sprich die Winter/Sommerzeit
ignoriert wird.

Ich hab mir mal die http://pytz.sourceforge.net/ und die
http://www.egenix.com/products/python/mxBase/mxDateTime/
Bibliotheken angeguckt, mir erschliesst sich aber nicht wie ich diese
(an sich einfach anmutende) Aufgabe damit lösen kann.

Bin für jede Hilfe dankbar
Andreas

André Malo

unread,
Feb 8, 2008, 11:48:07 AM2/8/08
to
* andreas...@googlemail.com wrote:

> folgendes Problem:
> Ich habe Strings, die eine Zeit in UTC (Weltzeit) angeben z.B. :
> "2008-01-15 22:32:30"
> Desweiteren habe ich einen String, der die Zeitzone angibt, z.B:
> "-05:00".
>
> Ich will nun die entsprechende Lokalzeit rausfinden. Das Datum ist
> dabei unwichtig,
> wichtig ist die Uhrzeit. In welchem Format die geliefert wird ist mir
> weitgehend gleichgültig.
> Die Lösung einfach in diesem Falle -5 mit 22 zu addieren liefert nicht
> immer das richtige Ergebnis, da die DST, sprich die Winter/Sommerzeit
> ignoriert wird.

Öhm, das Format "-05:00" gibt keinerlei Informationen über die Zeitzone her,
sondern nur über die Zeitverschiebung (zu einem bestimmten Zeitpunkt).
Damit hast du keinerlei DST-Information, die du anwenden könntest. Du
brauchst schon sowas wie "PST" oder "Europe/Berlin" um den Kontext der
Zeitverschiebung zu kennen.

nd
--
Winnetous Erbe: <http://pub.perlig.de/books.html#apache2>

Florian Weimer

unread,
Feb 8, 2008, 2:54:36 PM2/8/08
to
* andreas profous:

> Desweiteren habe ich einen String, der die Zeitzone angibt, z.B:
> "-05:00".

> Die Lösung einfach in diesem Falle -5 mit 22 zu addieren liefert nicht


> immer das richtige Ergebnis, da die DST, sprich die Winter/Sommerzeit
> ignoriert wird.

Dann gibt "-05:00" schlicht nicht den Offset zu UTC an.

Diez B. Roggisch

unread,
Feb 9, 2008, 11:20:45 AM2/9/08
to
andreas...@googlemail.com schrieb:

Das hier habe ich mal zusammengehakt vor ein paar Wochen, v ist ein
timestamp der Form

YYYY-MM-DDTHH:mm:SS s?H:MM

wobei klein-s ein vorzeichen sein soll.


def convert_timestamp(v):
tz = pytz.utc
prefix = v[:len('2008-01-12T16:48:28')]
timezone_info = v[len('2008-01-12T16:48:28'):]
if timezone_info and timezone_info != "Z":
try:
sign, hours, minutes =
re.match("([+-]?)([0-9]{2}):([0-9]{2})", timezone_info).groups()
except:
print v
raise
hours = int(hours, 10)
if sign == "-":
hours = -hours
minutes = int(minutes, 10)
tz = pytz.FixedOffset(hours * 60 + minutes)
time_tuple = time.strptime(prefix, "%Y-%m-%dT%H:%M:%S")
dt = datetime.datetime(tzinfo=tz, *time_tuple[:6])
return dt


Das *sollte* dir eine Idee geben. Glaube ich... :)

Diez

0 new messages