Jquery Django Ajax响应日期和时间格式

Jquery Django Ajax响应日期和时间格式,jquery,python,ajax,django,response,Jquery,Python,Ajax,Django,Response,有问题 我使用Django、SQLite、jquery和AJAX 问题是,当我从数据库中获取日期和时间时,它看起来很奇怪 有没有办法正常显示为dd/mm/yyyy HH:mm Modeles.py View.py Js.Js 结果:2016-09-21T06:43:26.693Z 应该是:21/09/2016 06:43 这并不奇怪,这是ISO 8601,改变它不是一个好主意。但您可以通过定义自己的编码器: import json from datetime import dateteime

有问题

我使用Django、SQLite、jquery和AJAX

问题是,当我从数据库中获取日期和时间时,它看起来很奇怪

有没有办法正常显示为dd/mm/yyyy HH:mm

Modeles.py

View.py

Js.Js

结果:2016-09-21T06:43:26.693Z

应该是:21/09/2016 06:43


这并不奇怪,这是ISO 8601,改变它不是一个好主意。但您可以通过定义自己的编码器:

import json
from datetime import dateteime

from django.forms.models import model_to_dict
from django.core.serializers.json import DjangoJSONEncoder

class MyEncoder(DjangoJSONEncoder):
    def default(self, obj):
        if isinstance(obj, date):
            return obj.strftime('%d.%m.%Y')
        return super(MyEncoder, self).default(obj)


json.dumps([model_to_dict(o) for o in QueryHistory.objects.all()], cls=MyEncoder)
或者由您自己的序列化程序:

import json
from datetime import dateteime

from django.core.serializers.python import Serializer

class MySerializer(Serializer):
    def handle_field(self, obj, field):
        value = field.value_from_object(obj)
        if isinstance(value, date):
            self._current['date'] = value.strftime('%d.%m.%Y')
        else:
            super(MySerializer, self).handle_field(obj, field)


serializer = MySerializer()
queries_list = serializer.serialize(QueryHistory.objects.all())
json.dumps(queries_list)

这并不奇怪,这是ISO 8601,改变它不是一个好主意。但您可以通过定义自己的编码器:

import json
from datetime import dateteime

from django.forms.models import model_to_dict
from django.core.serializers.json import DjangoJSONEncoder

class MyEncoder(DjangoJSONEncoder):
    def default(self, obj):
        if isinstance(obj, date):
            return obj.strftime('%d.%m.%Y')
        return super(MyEncoder, self).default(obj)


json.dumps([model_to_dict(o) for o in QueryHistory.objects.all()], cls=MyEncoder)
或者由您自己的序列化程序:

import json
from datetime import dateteime

from django.core.serializers.python import Serializer

class MySerializer(Serializer):
    def handle_field(self, obj, field):
        value = field.value_from_object(obj)
        if isinstance(value, date):
            self._current['date'] = value.strftime('%d.%m.%Y')
        else:
            super(MySerializer, self).handle_field(obj, field)


serializer = MySerializer()
queries_list = serializer.serialize(QueryHistory.objects.all())
json.dumps(queries_list)

我想出了自己的解决办法

要以自己的格式显示日期,只需创建一个变量新日期

之后,我们将解析此变量响应的日期,因此将其更改为:

var date = new Date(ourAjaxResponse.date);
现在,如果您尝试显示它,您将获得一个标准的JavaScript日期格式:

2015年3月25日星期三13:00:00 GMT+1300新西兰

多亏了JavaScript,它有两个方法,允许我们获得小时、分钟和所有我们需要的东西来显示我们想要的日期

var date = new Date(ourAjaxResponse.date);
   var day  = date.getDate();
   var mnth = date.getMonth(); 
   var year = date.getFullYear();
   var hrs  = date.getHours();
   var mnts = date.getMinutes();
var mnths将是1到12之间的数字,因此您可以用自己的语言创建一个包含月份列表的数组

var monthNames = [
  "Января", "Февраля", "Марта",
  "Апреля", "Мая", "Июня", "Июля",
  "Августа", "Сентября", "Октября",
  "Ноября", "Декабря"
]; // For Example: in Russian 

var monthNames = [
  "January", "February", "March",
  "April", "May", "June", "July",
  "August", "September", "October",
  "November", "December"
]; //or in English
最终结果:

我有一个获取日期变量的函数:

function get_date(date){
    var date = new Date(date);
    var day = date.getDate();
    var monthIndex = date.getMonth();
    var year = date.getFullYear();
    var hours = addZero(date.getHours());//addZero() function described below
    var minutes = addZero(date.getMinutes());

    return "<i class='fa fa-calendar-o' aria-hidden='true'></i> " + day + " " + monthNames[monthIndex] + " " + year + " <i class='fa fa-clock-o' aria-hidden='true'></i> " + hours + ":" + minutes;
}
2016年9月22日01:16

如果您更改了“退货”功能,则“获取日期”为:

22/09/2016 01:16


我想出了自己的解决办法

要以自己的格式显示日期,只需创建一个变量新日期

之后,我们将解析此变量响应的日期,因此将其更改为:

var date = new Date(ourAjaxResponse.date);
现在,如果您尝试显示它,您将获得一个标准的JavaScript日期格式:

2015年3月25日星期三13:00:00 GMT+1300新西兰

多亏了JavaScript,它有两个方法,允许我们获得小时、分钟和所有我们需要的东西来显示我们想要的日期

var date = new Date(ourAjaxResponse.date);
   var day  = date.getDate();
   var mnth = date.getMonth(); 
   var year = date.getFullYear();
   var hrs  = date.getHours();
   var mnts = date.getMinutes();
var mnths将是1到12之间的数字,因此您可以用自己的语言创建一个包含月份列表的数组

var monthNames = [
  "Января", "Февраля", "Марта",
  "Апреля", "Мая", "Июня", "Июля",
  "Августа", "Сентября", "Октября",
  "Ноября", "Декабря"
]; // For Example: in Russian 

var monthNames = [
  "January", "February", "March",
  "April", "May", "June", "July",
  "August", "September", "October",
  "November", "December"
]; //or in English
最终结果:

我有一个获取日期变量的函数:

function get_date(date){
    var date = new Date(date);
    var day = date.getDate();
    var monthIndex = date.getMonth();
    var year = date.getFullYear();
    var hours = addZero(date.getHours());//addZero() function described below
    var minutes = addZero(date.getMinutes());

    return "<i class='fa fa-calendar-o' aria-hidden='true'></i> " + day + " " + monthNames[monthIndex] + " " + year + " <i class='fa fa-clock-o' aria-hidden='true'></i> " + hours + ":" + minutes;
}
2016年9月22日01:16

如果您更改了“退货”功能,则“获取日期”为:

22/09/2016 01:16

return day + "/" + monthIndex + "/" + year + " " + hours + ":" + minutes;