【问题标题】:T Format date inside json [duplicate]T在json中格式化日期[重复]
【发布时间】:2021-06-29 02:19:22
【问题描述】:

我像这样从后端获取 json:

 {
   "datas":[
      {
         "id":4,
         "create_date":"2021-03-18T21:11:57.239Z"
      },
      {
         "id":5,
         "create_date":"2021-03-19T19:37:05.829Z"
      }
   ]
}

并像下面这样循环遍历json:

 $(data.datas).each(function(index,value){
        html += `<tr><th scope="row">${index+1}</th>
              <td>${value.id}</td>
              <td>${value.create_date}</td>
              <td><a href="#" class="btn btn-outline-dark">View Car</a></td>
            </tr>`
 })

但是,这里 create_date 只是像这样在 td 列中打印 2021-03-18T21:11:57.239Z 。那么,我怎样才能在每个 tds 中像 2021-03-18 &amp; 21:11 am/pm 这样显示呢?

我的尝试

var created_date = value.create_date;
console.log(created_date.split("T")[0]);//2021-03-18
console.log(created_date.split("T")[1])//21:11:57.239Z (how can i remove 57.239Z..)

我对两种解决方案都持开放态度,即:后端和前端。对于我的后端,我正在使用 django,如果您需要从后端查看任何代码,请告诉我。

【问题讨论】:

  • 试试这个&lt;td&gt;${value.create_date|date:"M d, Y" }}&lt;/td&gt;

标签: jquery django


【解决方案1】:

您可以在前端中应用MomentJS来格式化日期时间。

先决条件:

  • MomentJS 脚本添加到您的HTML

// Demo with assign sample data into createdDate
var created_date = new Date();
console.log(moment(created_date).format("YYYY-MM-DD & HH:mm a"));
// Result: 2021-04-02 & 15:16 pm
&lt;script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"&gt;&lt;/script&gt;

参考:MomentJS Parse string format

【讨论】:

    【解决方案2】:

    从后端解决它。您可以在 settings.py

    中进行设置
    REST_FRAMEWORK = {
        'DATETIME_FORMAT': "%Y-%m-%d & %H:%M %p",
    }
    

    更多信息在DRF Documentation

    输出将如下所示:

    “create_date”:“2021-03-18 & 21:11 AM”

    【讨论】:

    • 您好,谢谢您的回答,但是,数据来自 db 。那么有什么办法可以做到吗?
    • 试试@Vel 的建议,${value.create_date|date:"M d, Y" }}
    • 在 jquery 代码中我猜它不起作用,因为我正在使用 jquery/ajax 代码生成 trs。
    猜你喜欢
    • 2016-09-23
    • 1970-01-01
    • 1970-01-01
    • 2017-02-19
    • 2013-01-19
    • 2011-07-17
    • 1970-01-01
    • 1970-01-01
    • 2018-07-28
    相关资源
    最近更新 更多