凯鲁嘎吉
用书写铭记日常,最迷人的不在远方

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

posted on 2023-04-18 18:12  凯鲁嘎吉  阅读(248)  评论(0编辑  收藏  举报