Python小練習:解決strftime()中國時區亂碼問題
作者:凱魯嘎吉 - 博客園 http://www.cnblogs.com/kailugaji/
1. mytest.py
1 # -*- coding: utf-8 -*- 2 # Author:凱魯嘎吉 Coral Gajic 3 # https://www.cnblogs.com/kailugaji/ 4 # Python小練習:解決strftime()中國時區亂碼問題 5 import datetime 6 import dateutil.tz 7 now = datetime.datetime.now(dateutil.tz.tzlocal()) 8 timestamp = now.strftime('%Y-%m-%d %A %H:%M:%S %Z').encode('latin-1').decode('GBK') 9 print('方法1:datetime模塊 | ', timestamp) 10 # -------------------------------------------------------------------------------------- 11 import time 12 timestamp = time.strftime('%Y-%m-%d %A %H:%M:%S %Z').encode('latin-1').decode('GBK') 13 print('方法1:time模塊 | ', timestamp) 14 # -------------------------------------------------------------------------------------- 15 import time 16 import locale 17 locale.setlocale(locale.LC_ALL, '') 18 timestamp = time.strftime('%Y-%m-%d %A %H:%M:%S %Z') 19 print('方法2:time模塊 | ', timestamp) 20 21 # %y 兩位數的年份表示(00-99) 22 # %Y 四位數的年份表示(000-9999) 23 # %m 月份(01-12) 24 # %d 月內中的一天(0-31) 25 # %H 24小時制小時數(0-23) 26 # %I 12小時制小時數(01-12) 27 # %M 分鐘數(00=59) 28 # %S 秒(00-59) 29 # %a 本地簡化星期名稱 30 # %A 本地完整星期名稱 31 # %b 本地簡化的月份名稱 32 # %B 本地完整的月份名稱 33 # %c 本地相應的日期表示和時間表示 34 # %j 年內的一天(001-366) 35 # %p 本地A.M.或P.M.的等價符 36 # %U 一年中的星期數(00-53)星期天爲星期的開始 37 # %w 星期(0-6),星期天爲星期的開始 38 # %W 一年中的星期數(00-53)星期一爲星期的開始 39 # %x 本地相應的日期表示 40 # %X 本地相應的時間表示 41 # %Z 當前時區的名稱
2. 結果
方法1:datetime模塊 | 2023-04-18 Tuesday 18:10:43 中國標準時間 方法1:time模塊 | 2023-04-18 Tuesday 18:10:43 中國標準時間 方法2:time模塊 | 2023-04-18 星期二 18:10:43 中國標準時間
亂碼問題是在Windows下出現的。例如:"中國標準時間"六個漢字成了:"Öйú±ê׼ʱ¼ä"。
如果用Ubuntu,則直接使用如下代碼:
1 import datetime 2 import dateutil.tz 3 now = datetime.datetime.now(dateutil.tz.tzlocal()) 4 timestamp = now.strftime('%Y-%m-%d %A %H:%M:%S %Z') 5 print(timestamp)
結果:
2023-04-18 Tuesday 18:16:42 CST
其中CST表示中國標準時間(China Standard Time)。