我有一个字符串为Mon 03-Jul-2017, 11:00 AM/PM
,我必须使用时刻js将其转换为11:00 AM/PM
之类的字符串。
此处的问题是我无法从日期时间字符串中获取AM
或PM
。
我这样做:
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
答案 0 :(得分:52)
解析输入时,您使用的格式标记错误。您应该使用ddd
作为星期几名称的缩写,DD
表示该月中的某一天,MMM
表示月份名称的缩写,YYYY
表示这一年,hh
小时为1-12
,分钟为mm
,A
为AM/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>