2017-01-26 4 views
0

Ich versuche, eine Zeichenfolge zu aktualisieren, ob das aktuelle Gebietsschema verwendet auf die Zeit unterschiedlich, je AM/PM oder 24-StundenWie kann ich überprüfen, ob das aktuelle Gebietsschema AM/PM oder 24-Stunden-Zeit verwendet?

strftime("%I:%M %p") oder

Wenn das Gebietsschema bestimmt werden kann ich dann die Zeit Zeichenfolge aktualisiert mit angezeigt werden soll strftime("%H:%M") je nach Gebietsschema

Wie kann ich programmgesteuert feststellen, ob das aktuelle Gebietsschema AM/PM oder 24-Stunden-Zeit verwendet?

Oder gibt es einen besseren Weg, um das gleiche Ziel zu erreichen (eine Zeit unterschiedlich anzuzeigen, abhängig davon, auf welchem ​​Gebietsschema meine Software läuft)?

dankbar für die Hilfe und mit freundlichen Grüßen Tord

+2

Da die „locale angemessen Zeit "für' en_US' in [der 'strftime' /' strptime' Dokumentation] (https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior) wird mit einer 24 gerendert Stundentakt ('% X' erzeugt' 21: 30: 00' unter 'en_US' locale), bezweifle ich, dass die Python-Gebietsschema-Information anzeigt, ob der lokale Standard 12 oder 24 Stunden ist. Die USA ist fast 100% 12-Stunden-Uhr, aber die Gebietsschema-Zeitdarstellung ist 24 Stunden. – ShadowRanger

Antwort

0

Mit der time.strftime() Funktion mit dem %p Parameter wird das Äquivalent für AM/PM im aktuellen Gebietsschema geben, und für Lokalisierungen, die zurückgegeben wird nicht AM/PM eine leere Zeichenkette verwenden. Ich benutze dies auf folgende Weise:

time_format_string = "%H:%M" # Ex: Sweden 
if time.strftime("%p"): # Checking if the string contains something 
    time_format_string = "%I:%M %p" # Ex: US 
time_of_day_string = time.strftime(time_format_string) 
print(time_of_day_string) 

ich dies für zwei Lokalisierungen versucht haben (eine mit und eine andere ohne AM/PM)

Referenz: https://docs.python.org/3.6/library/time.html#time.strftime

0

Tord ist das Verhalten seltsam, aber das funktionierte auf Windows 7. Beachten Sie, dass vor der locale die Zeit, als 24 Stunden Uhr angezeigt zu setzen. Sobald das Gebietsschema eingestellt wurde, wird es unter Verwendung der 12-Stunden-AM/PM-Einstellung angezeigt. Das ist die richtige Einstellung von meinem Laptop.

Python 3.6.0 (v3.6.0:41df79263a11, Dec 23 2016, 08:06:12) [MSC v.1900 64 bit (AMD64)] on win32 
Type "copyright", "credits" or "license()" for more information. 
>>> import locale 
>>> import time 
>>> cur_locale = locale.getlocale() # current locale setting 
>>> cur_locale 
('English_United States', '1252') 
>>> time.strftime("%X") # %X - Locale’s appropriate time representation 
'20:01:47' 
>>> locale.setlocale(locale.LC_TIME, cur_locale) 
'English_United States.1252' 
>>> time.strftime("%X") # %X - Locale’s appropriate time representation 
'8:02:11 PM' 
>>> 
+0

Danke. Okay, ich bekomme ein ähnliches Verhalten unter Ubuntu 16.04: AM/PM wird erst am Ende der Ausgabezeichenfolge hinzugefügt, nachdem setlocale verwendet wurde – sunyata

Verwandte Themen