考虑以下情况:
let record = "2020-04-01 13:33 PM UTC";
var local_date = moment(new Date(record)).format("MMM Do, YYYY h:mm A");
以上代码返回无效日期。
但对于以下情况:
let record = "2020-04-01 2:33 AM UTC";
var local_date = moment(new Date(record)).format("MMM Do, YYYY h:mm A");
它返回:2020年4月1日上午8:33
链接到沙盒:https://codesandbox.io/s/happy-volhard-m1c7d
有什么解决这个问题的建议吗?
如果要解析的字符串不是moment.js支持的格式之一,并且您没有提供该格式,它将使用内置的解析器。控制台中会有一条消息警告您这是个坏主意(因为确实如此,请参阅为什么Date.parse给出不正确的结果?(。
当您有任何不支持的格式字符串时,必须提供格式,例如
let s = "2020-04-01 13:33 PM UTC";
// Provide the input format when parsing
let d = moment(s, 'YYYY-MM-DD HH:mm A UTC');
// Provide the output format when formatting
console.log(d.format('MMM Do, YYYY h:mm A'));
// If the date is to be treated as UTC, use .utc
console.log(d.utc().format('MMM Do, YYYY h:mm A'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
BTW,当使用24小时时间时,使用AM和PM是多余的(并且可能会混淆(。
您提供的UTC不正确,请将MMM Do, YYYY h:mm A
更改为MMM Do, YYYY hh:mm A
,或将时间先更改为12小时格式。格式应为01、12、24等
moment(record, "YYYY-MM-DDHH:mmZ").format("MMMM Do YYYY, H:mm");