2017-01-26 68 views
0

我試圖更新應該顯示的不同取決於當前的語言環境是否使用AM/PM或24小時如何檢查當前區域設置是使用AM/PM還是24小時?

如果區域可以被確定那麼我就可以使用strftime("%I:%M %p")更新時間字符串或時間的字符串strftime("%H:%M")取決於語言環境

如何以編程方式確定當前語言環境是使用AM/PM還是24小時制?

還是有更好的方法來達到相同的目標(顯示一個不同的時間取決於我的軟件在哪個區域運行)?

爲感謝幫助與親切的問候, 託德

+2

鑑於「語言環境中適當的我以下列方式使用在'strftime' /'strptime'文檔](https://docs.python.org/3/library/datetime.html#strftime-and-strptime-behavior)中的'en_US'的時間是用24小時鐘('%X'在'en_US'語言環境下生成'21:30:00'),我懷疑Python語言環境信息表明本地標準是12或24小時制。美國將近100%12小時制,但現場時間表示爲24小時。 – ShadowRanger

回答

0

使用time.strftime()功能與%p參數將給予相當於調幅在當前區域設置/ PM,並且不使用AM/PM,則返回一個空字符串的語言環境。

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) 

我已經試過這兩種語言環境(一個和另一個,而AM/PM)

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

0

託德,行爲古怪,但是這在設定區域顯示爲24小時時鐘的時間之前,曾在Windows 7注。一旦設置了區域設置,它將使用12小時AM/PM設置進行顯示。這是我筆記本電腦的正確設置。

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

謝謝。好的,我在Ubuntu 16.04上得到類似的行爲:只有在使用setlocale之後,AM/PM纔會添加到輸出字符串的末尾 – sunyata

相關問題