我使用Date.js来解析日期和时间字符串
var start_time='10-Jun-15 12:00 am';
var end_time='10-Jun-15 12:00 pm';
警报时
alert(Date.parse(start_time));
alert(Date.parse(end_time));
第一个显示
Wed Jun 10 2015 12:00:00 GMT+0530 (India Standard Time)
,第二个显示
null
如何解决这个问题?。提前谢谢
答案 0 :(得分:0)
编辑:
我已经在chrome和FF中检查了你的日期格式。 Firefox不理解这种格式,但在Chrome中它可以正常工作。
我使用'2015年6月10日12:00 pm'格式,它在两种浏览器中都运行良好。
所以你应该尝试删除短划线并使用全年或使用任何其他日期格式。
日期应为RFC2822 or ISO 8601日期格式。
答案 1 :(得分:0)
您描述的缺陷也适用于Safari,Firefox和Chrome。这不是修复库,而是解析日期格式的简单函数。 2位数年份并不是一个好主意,该功能将它们视为+2000。三位数和四位数的年份按原样处理。
// Parse date format dd-mmm-yy hh:mm ap
// Two digit years are treated as 2000
// Years of three digits or more are treated as is
function parseDmY(s) {
var months = {jan:0,feb:1,mar:2,apr:3,may:4,jun:5,
jul:6,aug:7,sep:8,oct:9,nov:10,dec:11};
var b = s.split(/[- :]/);
var h = (b[3]%12) + (/pm/i.test(b[5])? 12 : 0);
var y = +b[2] + (b[2] < 100? 2000 : 0)
return new Date(y, months[b[1].toLowerCase()], b[0], h, b[4]);
}
console.log(parseDmY('10-Jun-2015 12:00 pm'));
也可以通过在当前年份的-70到+30范围内进行框架处理两位数年份。
答案 2 :(得分:0)
如果您的日期字符串始终以该格式提供,则使用Date.parseExact
将解决问题...并且它比使用Date.parse
更有效。
示例强>
var start_time='10-Jun-15 12:00 am';
var end_time='10-Jun-15 12:00 pm';
alert(Date.parseExact(start_time, 'dd-MMM-yy hh:mm tt'));
alert(Date.parseExact(end_time, 'dd-MMM-yy hh:mm tt'));
希望这有帮助。