如何使用时刻js从日期时间字符串获取pm

时间:2017-07-07 13:24:45

标签: javascript momentjs

我有一个字符串为Mon 03-Jul-2017, 11:00 AM/PM,我必须使用时刻js将其转换为11:00 AM/PM之类的字符串。

此处的问题是我无法从日期时间字符串中获取AMPM

我这样做:

moment(Mon 03-Jul-2017, 11:00 AM, 'dd-mm-yyyy hh:mm').format('hh:mm A')

并且它正常工作,因为我收到11:00 AM但如果字符串中包含PM,则它仍会在输出中提供AM

像这样moment(Mon 03-Jul-2017, 11:00 PM, 'dd-mm-yyyy hh:mm').format('hh:mm A')也在输出中提供11:00 AM而不是11:00 PM

2 个答案:

答案 0 :(得分:52)

解析输入时,您使用的格式标记错误。您应该使用ddd作为星期几名称的缩写,DD表示该月中的某一天,MMM表示月份名称的缩写,YYYY表示这一年,hh小时为1-12,分钟为mmAAM/PM。请参阅moment(String, String)文档。

这是一个有效的实时样本:

console.log( moment('Mon 03-Jul-2017, 11:00 AM', 'ddd DD-MMM-YYYY, hh:mm A').format('hh:mm A') );
console.log( moment('Mon 03-Jul-2017, 11:00 PM', 'ddd DD-MMM-YYYY, hh:mm A').format('hh:mm A') );
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

答案 1 :(得分:1)

您将获得时间,而无需指定日期格式。使用Date对象将字符串转换为日期

var myDate = new Date('Mon 03-Jul-2017, 06:00 PM');

工作解决方案:

var myDate= new Date('Mon 03-Jul-2017, 06:00 PM');
console.log(moment(myDate).format('HH:mm')); // 24 hour format 
console.log(moment(myDate).format('hh:mm'));
console.log(moment(myDate).format('hh:mm A'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>