不使用Django区域设置系统日期格式(System date formatting not usi

2019-07-29 14:58发布

想了解本地化执行到Django的,这里是我的设置

LANGUAGE_CODE = 'fr-FR'
USE_L10N = True

如果我尝试

>>> datetime.datetime.strptime('2012-05-30 15:30', '%Y-%m-%d %H:%M')
      .strftime('%c')

它会给我'Wed May 30 15:30:00 2012'那是EN语言环境。 然而, DOC是说:

[...]两个用户访问相同的内容,但在不同的语言,会看到日期和数字领域的格式以不同的方式,根据不同的格式,其当前的语言环境[...]

他们在谈论他们各自的浏览器设置的语言环境?
如果没有,我怎样才能将其设置为法语默认的例子吗?

Answer 1:

Django的本地化工作中的Django模板和表单的背景下,并不能出行环比上涨Python的内部日期时间表示:

When using Django's formatting system, dates and numbers on templates 
will be displayed using the format specified for the current locale. 
...Django will also use localized formats when parsing data in forms. 

所以,如果你有USE_L10N = True ,并与该区域的用户FR进入10,45到表单,将被解释为10.45在英国十进位制。 同样,像一个模板标签的输出{{ value|date:"SHORT_DATE_FORMAT" }}会根据用户所在的区域。

然而,Python的内部strftime('%c')不访问Django的设置,而是指在其上安装它的机器上设置的语言环境。 你可以检索和更改区域设置的Python指向具有:

>>> datetime.datetime.strptime('2012-05-30 15:30', '%Y-%m-%d %H:%M').strftime('%c')
'Wed May 30 15:30:00 2012'
>>> import locale
>>> locale.getlocale()
(None, None)
>>> locale.getdefaultlocale()
('en_US', 'UTF-8')
>>> locale.setlocale(locale.LC_ALL, "fr_FR.UTF-8")
'fr_FR.UTF-8'
>>> datetime.datetime.strptime('2012-05-30 15:30', '%Y-%m-%d %H:%M').strftime('%c')
'Mer 30 mai 15:30:00 2012'

或通过设置环境变量$LANG



文章来源: System date formatting not using django locale