首页 > 解决方案 > 时刻js时间格式没有产生正确的时间

问题描述

我有一个返回日期的 API,如下所示:

2020-04-30T14:52:07.123

我正在尝试将其格式化如下:

$('.dateTime').text(moment(new Date("2020-04-30T14:52:07.123")).format("DD-MM-yyyy HH:mm:ss A"))
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://momentjs.com/downloads/moment.js"></script>


<span class="dateTime"></span>

但我没有得到正确的结果。我明白了:

"30-04-2020 00:00:00 AM"

日、月和年是正确的,但时、分和秒设置为午夜。

标签: javascriptmomentjs

解决方案


我认为这00:00:00是 moment 2.25.x 版本中包含的新功能的副作用,如果您使用以前的版本(例如 2.24.0)运行代码,您将获得30-04-yyyy 14:52:07 AM.

您的代码的主要问题是时刻标记区分大小写(请参阅 参考资料format()),因此您必须使用大写字母YYYY来显示 4 位数年份而不是小写字母yyyyy

此外,由于您的输入字符串采用 ISO 8601 识别格式,您可以直接使用moment(String)和删除new Date().

工作示例:

$('.dateTime').text(moment("2020-04-30T14:52:07.123").format("DD-MM-YYYY HH:mm:ss A"))
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.25.3/moment.js"></script>

<span class="dateTime"></span>


推荐阅读