您的語言環境是否在您的腳本中設置?如果您致電locale.getlocale()
,結果是否是預期的?以下比較:
>>> import locale
>>> locale.getlocale()
(None, None)
>>> import datetime
>>> today = datetime.date.today()
>>> today
datetime.date(2010, 8, 9)
>>> today.strftime('%x')
'08/09/10'
>>> locale.setlocale(locale.LC_ALL, "de_DE.UTF-8")
'de_DE.UTF-8'
>>> locale.getlocale()
('de_DE', 'UTF8')
>>> today.strftime('%x')
'09.08.2010'
需要注意的是有缺陷的datetime
模塊中,因爲在底層的C庫錯誤的居多。例如,在我的安裝(最新的OS X)上,格式化字符串%z
完全不可用。
在Windows上,可用於setlocale()
的語言環境字符串的語法遵循與* nix平臺上不同的語法。列表是here on MSDN。
如果您只是希望將您的腳本設置爲用戶安裝的任何默認語言環境(在我的英國英語中),則只需在主腳本的開頭執行此操作即可。不這樣做的模塊,因爲它覆蓋了一個全局變量:
>>> locale.setlocale(locale.LC_ALL, "")
'en_GB.UTF-8'
來自https://wiki.debian.org/Locale:「強烈建議不要使用LC_ALL,因爲它會覆蓋所有內容,請僅在測試時使用,並且不要將其設置爲啓動文件。」 – dstonek 2018-03-07 18:49:20