问题描述
- tkbootstrap是我目前比较喜欢用的pythonGUI之一,但是前段时间在发现在跟datetime模块的部分函数使用时会报错,比如在使用strptime格式化日期时总会出现如下错误。
反复查看代码并没有问题,经过排查后发现没有tkbootstrap时代码是能正常格式化日期的。去了项目主页查看发现也有人遇到过这类问题。
解决办法
在执行带有“strptime”函数的行之前,将区域设置设置为 POSIX 标准,使用“strptime”格式化日期后,返回系统的默认区域设置。
参考代码如下
from ttkbootstrap import *
from datetime import datetime as dt
import locale
def set_locale_to_posix():
locale.setlocale(locale.LC_ALL, "C")
def set_locale_to_system_default():
locale.setlocale(locale.LC_ALL, locale.setlocale(locale.LC_TIME, ""))
my_date = '4/14/19801:01PM'
set_locale_to_posix()
my_date = dt.strptime(my_date, "%m/%d/%Y%I:%M%p")
set_locale_to_system_default()
print(my_date) # Return "1980-04-14 13:01:00"
这样就能正常格式化日期了