提问者:小点点

T在json中格式化日期[重复]


我从后端获取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&21:11am/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,如果您需要查看任何来自后端的代码,请告诉我。


共2个答案

匿名用户

从后端解决问题。您可以在settings.py中设置它

REST_FRAMEWORK = {
    'DATETIME_FORMAT': "%Y-%m-%d & %H:%M %p",
}

DRF文档中的更多信息

输出将如下所示:

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

匿名用户

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

先决条件:

  • MomentJS脚本添加到HTML

null

// 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
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>