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

Posted

技术标签:

【中文标题】T在json中格式化日期[重复]【英文标题】:T Format date inside json [duplicate] 【发布时间】: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; 【参考方案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。

以上是关于T在json中格式化日期[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从服务中检索的日期格式 [重复]

struts2 json 输出日期格式不正确

javascript日期格式处理

无法从 JavaScript 中的 JSON 文件获取具有日期格式的对象 [重复]

如何将Laravel输出的日期格式更改为JSON?

Json.net日期格式化设置