我試圖更新應該顯示的不同取決於當前的語言環境是否使用AM/PM或24小時如何檢查當前區域設置是使用AM/PM還是24小時?
如果區域可以被確定那麼我就可以使用strftime("%I:%M %p")
更新時間字符串或時間的字符串strftime("%H:%M")
取決於語言環境
如何以編程方式確定當前語言環境是使用AM/PM還是24小時制?
還是有更好的方法來達到相同的目標(顯示一個不同的時間取決於我的軟件在哪個區域運行)?
爲感謝幫助與親切的問候, 託德
我試圖更新應該顯示的不同取決於當前的語言環境是否使用AM/PM或24小時如何檢查當前區域設置是使用AM/PM還是24小時?
如果區域可以被確定那麼我就可以使用strftime("%I:%M %p")
更新時間字符串或時間的字符串strftime("%H:%M")
取決於語言環境
如何以編程方式確定當前語言環境是使用AM/PM還是24小時制?
還是有更好的方法來達到相同的目標(顯示一個不同的時間取決於我的軟件在哪個區域運行)?
爲感謝幫助與親切的問候, 託德
使用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
託德,行爲古怪,但是這在設定區域顯示爲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'
>>>
謝謝。好的,我在Ubuntu 16.04上得到類似的行爲:只有在使用setlocale之後,AM/PM纔會添加到輸出字符串的末尾 – sunyata
鑑於「語言環境中適當的我以下列方式使用在'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