将语言环境设置为pt-Br时,在python中将str转换为日期时出现问题

时间:2019-07-02 19:34:24

标签: python python-3.x datetime locale python-datetime

这是我的代码的片段:

import locale
from datetime import datetime

locale.setlocale(locale.LC_ALL, "pt-BR") # Windows

#### doing stuff with locale (like converting number 1.000,00)
#####

date_str = '29/12/2017' # The date - 29 Dec 2017
format_str = '%d/%m/%Y' # The format


datetime_obj = datetime.strptime(date_str, format_str)

仅使用此小代码,我会收到以下错误:

  
     

ValueError
  ()中的回溯(最近一次通话最近)        11        12   ---> 13 datetime_obj = datetime.strptime(date_str,format_str)

     

〜(\)中的\ AppData \ Local \ Continuum \ anaconda3 \ lib_strptime.py       278#在未获取缓存锁的情况下,请勿修改_TimeRE_cache或_regex_cache       279#第一!   -> 280 _TimeRE_cache = TimeRE()       281 _CACHE_MAX_SIZE = 5#_regex_cache中存储的最大正则表达式数量       282 _regex_cache = {}

     

〜\ AppData \ Local \ Continuum \ anaconda3 \ lib_strptime.py在 init (自身,   locale_time)       192 self.locale_time =语言环境时间       193其他:   -> 194 self.locale_time = LocaleTime()       195基= super()       196个基数。初始化({

     

〜\ AppData \ Local \ Continuum \ anaconda3 \ lib_strptime.py在 init 中(自己)        70        71“”“   ---> 72 self.lang = _getlang()        73 self .__ calc_weekday()        74 self .__ calc_month()

     _getlang()中的

〜\ AppData \ Local \ Continuum \ anaconda3 \ lib_strptime.py        29 def _getlang():        30#找出当前的语言设置。   ---> 31返回locale.getlocale(locale.LC_TIME)        32        33类LocaleTime(object):

     

〜\ AppData \ Local \ Continuum \ anaconda3 \ lib \ locale.py在   getlocale(类别)       579如果类别== LC_ALL和';'在语言环境名称中:       580提高TypeError('不支持类别LC_ALL')   -> 581 return _parse_localename(localename)       582       583 def setlocale(category,locale = None):

     

〜\ AppData \ Local \ Continuum \ anaconda3 \ lib \ locale.py在   _parse_localename(语言环境名称)       488 elif code =='C':       489返回无,无   -> 490提高ValueError('未知语言环境:%s'%localename)       491       492 def _build_localename(localetuple):

     

ValueError:未知语言环境:pt-BR

有什么线索可以解决这个问题吗?

我正在运行Windows,Python 3.6.5 | Anaconda,Inc. | (默认值,2018年3月29日,13:32:41)[MSC v.1900 64位(AMD64)]

2 个答案:

答案 0 :(得分:1)

尝试一下

locale.setlocale(locale.LC_ALL, "pt_br")

答案 1 :(得分:1)

在Windows上转到

控制面板->时钟和区域->区域->管理(选项卡)->更改系统区域设置(按钮)->将语言更改为葡萄牙语(巴西)->重新启动计算机

现在在您的代码上将语言环境设置为

locale.setlocale(locale.LC_ALL,'pt-BR.UTF-8')

我和你一样遇到同样的问题。我的错误是语言名称中缺少“ .UTF-8”。