116 Stimmen

Zeigen Sie die Zeit in einer anderen Zeitzone an

Gibt es einen eleganten Weg, um die aktuelle Zeit in einer anderen Zeitzone anzuzeigen?

Ich hätte gerne etwas im allgemeinen Geist von:

cur = 
print("Ortszeit   {}".format(cur))
print("Pazifikzeit {}".format())
print("Israelische Zeit {}".format())

2 Stimmen

0 Stimmen

Danke. Konnte es nicht finden, als ich nach dem Thema gesucht habe.

3 Stimmen

11voto

htaccess Punkte 2144

Dieses Skript, das die Module pytz und datetime verwendet, ist wie angefordert strukturiert:

#!/usr/bin/env python3

import pytz
from datetime import datetime, timezone

utc_dt = datetime.now(timezone.utc)

PST = pytz.timezone("US/Pacific")
IST = pytz.timezone("Asia/Jerusalem")

print("UTC time     {}".format(utc_dt.isoformat()))
print("Local time   {}".format(utc_dt.astimezone().isoformat()))
print("Pacific time {}".format(utc_dt.astimezone(PST).isoformat()))
print("Israeli time {}".format(utc_dt.astimezone(IST).isoformat()))

Es gibt folgende Ausgabe:

$ ./timezones.py 
UTC time     2019-02-23T01:09:51.452247+00:00
Local time   2019-02-23T14:09:51.452247+13:00
Pacific time 2019-02-22T17:09:51.452247-08:00
Israeli time 2019-02-23T03:09:51.452247+02:00

0 Stimmen

Warum würdest du pytz verwenden, wenn du bereits timezone hast?

1 Stimmen

AFAIK datetime.timezone unterstützt nur die Erstellung von Zeitzonen mit Abweichungen von UTC (z. B. -08), es unterstützt keine Zeichenfolgen wie "US/Pacific". Wenn Sie diese nicht benötigen, benötigen Sie kein pytz.

3voto

OLS Punkte 135

Dies ist meine Implementierung:

from datetime import datetime
from pytz import timezone

def lokale_zeit(zone='Asia/Jerusalem'):
    andere_zone = timezone(zone)
    andere_zone_zeit = datetime.now(andere_zone)
    return andere_zone_zeit.strftime('%T')

0 Stimmen

Nicht anders als der vorherige. Nur die Funktion formatiert und sieht sauberer aus. Ich werde es als Kommentar hinzufügen. Oh... Ich kann keinen Kommentar abgeben.

0voto

SpiRail Punkte 1363

Ich brauche die ganze Zeit Information, also habe ich dieses tolle .py-Skript auf meinem Server, das es mir ermöglicht, einfach auszuwählen und abzuwählen, welche Zeitzonen ich in der Reihenfolge von Ost->West anzeigen möchte.

Es wird so ausgegeben:

Australia/Sydney    :   2016-02-09 03:52:29 AEDT+1100
Asia/Singapur       :   2016-02-09 00:52:29 SGT+0800
Asien/Hongkong       :   2016-02-09 00:52:29 HKT+0800
Osteuropäische Zeit                 :   2016-02-08 18:52:29 EET+0200
Mitteleuropäische Zeit                 :   2016-02-08 17:52:29 CET+0100     <- du bist HIER
UTC                 :   2016-02-08 16:52:29 UTC+0000
Europa/London       :   2016-02-08 16:52:29 GMT+0000
Amerika/New_York    :   2016-02-08 11:52:29 EST-0500
Amerika/Los_Angeles :   2016-02-08 08:52:29 PST-0800

Hier ist der Quellcode einer .py-Datei auf meinem Github hier: https://github.com/SpiRaiL/zeitzonen Oder der direkte Dateilink: https://raw.githubusercontent.com/SpiRaiL/zeitzonen/master/zeitzone.py

In der Datei ist eine Liste wie diese: Setzen Sie einfach ein 'p' an den Stellen, die Sie drucken möchten. Setzen Sie ein 'h' für Ihre eigene Zeitzone, wenn Sie möchten, dass sie besonders markiert wird.

(' ','Amerika/Adak'),                               (' ','Afrika/Abidjan'),                             (' ','Atlantik/Azoren'),                            (' ','GB'),
(' ','Amerika/Anchorage'),                          (' ','Afrika/Accra'),                               (' ','Atlantik/Bermuda'),                           (' ','GB-Eire'),
(' ','Amerika/Anguilla'),                           (' ','Afrika/Addis_Abeba'),                         (' ','Atlantik/Kanarische Inseln'),                            (' ','GMT'),
(' ','Amerika/Antigua'),                            (' ','Afrika/Algier'),                             (' ','Atlantik/Kap Verde'),                        (' ','GMT+0'),
(' ','Amerika/Araguaina'),                          (' ','Afrika/Asmara'),                              (' ','Atlantik/Färöer'),                            (' ','GMT-0'),
(' ','Amerika/Argentinien/Buenos_Aires'),             (' ','Afrika/Asmera'),                              (' ','Atlantik/Färöer'),                             (' ','GMT0'),
(' ','Amerika/Argentinien/Catamarca'),                (' ','Afrika/Bamako'),                              (' ','Atlantik/Jan_Mayen'),                         (' ','Greenwich'),
(' ','Amerika/Argentinien/ComodRivadavia'),           (' ','Afrika/Bangui'),                              (' ','Atlantik/Madeira'),                           (' ','HST'),
(' ','Amerika/Argentinien/Cordoba'),                  (' ','Afrika/Banjul'),                              (' ','Atlantik/Reykjavik'),                         (' ','Hongkong'),

0voto

hooman Punkte 476

Kann die Zeitzone angeben, indem die Module datetime von datetime und pytz importiert werden.

from datetime import datetime
import pytz

tz_NY = pytz.timezone('America/New_York') 
datetime_NY = datetime.now(tz_NY)
print("NY-Zeit:", datetime_NY.strftime("%H:%M:%S"))

tz_London = pytz.timezone('Europe/London')
datetime_London = datetime.now(tz_London)
print("London-Zeit:", datetime_London.strftime("%H:%M:%S"))

tz_Indien = pytz.timezone('Asia/Kolkata')
datetime_Indien = datetime.now(tz_Indien)
print("Indien-Zeit:", datetime_Indien.strftime("%H:%M:%S"))

0 Stimmen

Es ist 'Asia/Kolkata' nicht 'Asia/India', Alle verfügbaren Zeitzonen: pytz.all_timezones

0 Stimmen

@ShirishShukla Danke für die Beachtung. Ich habe meine Antwort bearbeitet, um auch Kolkata statt Indien einzuschließen.

0voto

autonopy Punkte 195

Ich verwende pandas oft in meinem Code und importiere nicht gerne zusätzliche Bibliotheken, wenn es nicht unbedingt erforderlich ist. Hier ist eine einfache und saubere Lösung, die ich verwende:

import pandas as pd

t = pd.Timestamp.now('UTC') #zieht die UTC-Zeit
t_rounded = t.round('10min') #rundet auf die nächstgelegenen 10 Minuten
now_UTC_rounded = f"{t_rounded.hour:0>2d}{t_rounded.minute:0>2d}" #im Format HH:MM

t = pd.Timestamp.now(tz='US/Eastern') #zieht die Zeit der Eastern-Zeitzone (EDT oder EST, je nach aktuellem Stand)
t_rounded = t.round('10min') #rundet auf die nächstgelegenen 10 Minuten
now_EAST_rounded = f"{t_rounded.hour:0>2d}{t_rounded.minute:0>2d}" #im Format HH:MM

print(f"Die aktuelle UTC-Zeit lautet: {now_UTC_rounded} (gerundet auf die nächste 10-minütige Einheit)")
print(f"Die aktuelle US/Ost-Zeit lautet: {now_EAST_rounded} (gerundet auf die nächste 10-minütige Einheit)")

Ausgaben:

Die aktuelle UTC-Zeit lautet: 1800 (gerundet auf die nächste 10-minütige Einheit)
Die aktuelle US/Ost-Zeit lautet: 1400 (gerundet auf die nächste 10-minütige Einheit)

(tatsächliche Zeit der Eastern-Zeitzone war 14:03) Die Rundungsfunktion ist praktisch, denn wenn Sie etwas zu einer bestimmten Zeit auslösen möchten, wie z.B. zur vollen Stunde, können Sie um 4 Minuten nach beiden Seiten daneben liegen und dennoch übereinstimmen.

Ich zeige nur Funktionen - natürlich müssen Sie die Rundungsfunktion nicht verwenden, wenn Sie nicht möchten!

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X