Javascript 时刻返回';无效日期';如果是24小时制

Javascript 时刻返回';无效日期';如果是24小时制,javascript,reactjs,date,momentjs,Javascript,Reactjs,Date,Momentjs,考虑到以下情况: 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"); 上面的代码返回无效的日期 但

考虑到以下情况:

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");
上面的代码返回无效的日期

但对于以下情况:

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

链接到沙盒:


有任何解决此问题的建议吗?

您提供的UTC不正确,请将
MMM Do,YYYY h:mm A
更改为
MMM Do,yyy hh:mm A
或将时间优先更改为12小时格式。格式应为01、11、24等。

如果要解析的字符串不是moment.js支持的格式之一,并且您不提供格式,它将使用内置解析器。您将在控制台中看到一条消息,警告您这是一个坏主意(因为它是,请参阅)

当您有任何不受支持的格式字符串时,必须提供格式,例如

let s=“2020-04-01 13:33下午UTC”;
//解析时提供输入格式
设d=时刻(s,'YYYY-MM-DD HH:MM A UTC');
//格式化时提供输出格式
log(d.format('mmmdo,yyyyy h:mma');
//如果要将日期视为UTC,请使用.UTC
log(d.utc().format('mmmdo,yyyyy h:mma')

你为什么要在上午13:33。。。由于13:33是下午1:33?UTC也不正确,对于24小时时间,请使用
H:mm
not
H:mm A
-并确保您的输入是24小时格式的。对于应该出现的错误,请记录='2020-04-01 13:54 PM UTC'