如何将字符串转换为django中的本地化日期

时间:2013-03-07 15:01:59

标签: python django date localization date-format

我们正在Django中进行AJAX调用,用户输入日期和数字,如果已经存在具有该数字和日期的文档,则查找AJAX调用。

该应用程序已国际化并已本地化。问题是如何将AJAX发送的日期解释为有效的Python / Django日期对象。这必须使用当前用户区域设置来完成。

我找到的一个解决方案不起作用: Django: how to get format date in views?
get_format()返回一个字符串(在我们的示例中为j-n-Y),但strftime()需要格式字符串%j-%n-%Y

为什么Django格式与stftime()格式有所不同,因为我们目前正在使用Django 1.5。

我认为问题在于,在我发现的所有示例中,日期都是日期对象,而Python / Django只是格式化。我们需要的是使用当前语言环境将字符串转换为日期,然后格式化它。我认为这将是一个标准问题,但我发现并尝试的所有可能的解决方案似乎都不起作用......

谢谢,
埃里克

3 个答案:

答案 0 :(得分:2)

向Django提交一张票给了我一个答案的线索。 您可以通过将特定类型的数据传递到相应的字段并调用to_python()来将其转换为对象。在我的情况下,日期就是这样:

from django.forms.fields import DateField

field = DateField()
value = request.GET.get('date', '')
formatted_datetime = field.to_python(value)

埃里克

答案 1 :(得分:0)

对我而言,它会让您的生活更容易让用户从日历中选择日期,而不是键入其字符串表示。 这样你就可以准确地知道你得到了什么。

答案 2 :(得分:0)

如果你知道格式,那么你应该可以使用datetime.strptime

在代码中成功地与ajax调用一起使用它。

有关详细信息,请参阅此处:http://docs.python.org/2/library/datetime.html#strftime-strptime-behavior