Python小練習:解決strftime()中國時區亂碼問題

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)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章