Date.parse无法正常工作

时间:2014-05-02 12:26:56

标签: javascript

我有一个场景,我必须解析两个日期,例如开始日期和结束日期。

var startdate = '30-04-2014 05:30:00 PM';
var enddate = '02-05-2014 05:52:36 PM';

但是如果我们提醒开始日期

alert(Date.Parse(startdate)); 

我会得到1465041600000

但如果我提醒enddate

alert(Date.Parse(enddate)); 

我会得到1391602956000

但这不能正常工作,因为enddate大于startdate,但解析后我们会得到更大的开始日期值。我希望在这两天之间找到差异。 任何人都可以知道解决方法吗?

5 个答案:

答案 0 :(得分:1)

Date.parse('30-04-2014 05:30:00 PM') // returns NAN!

我假设您的意思是2014年4月30日和2014年5月2日,在这种情况下它应该是(mm-dd-yyyy)

Date.parse('04-30-2014 05:30:00 PM') // returns 1398844800000

Date.parse('05-02-2014 05:30:00 PM') // returns 1399018956000

答案 1 :(得分:0)

您的日期格式错误。根据{{​​3}}:

  

或者,日期/时间字符串可以是ISO 8601格式。例如,可以传递和解析“2011-10-10”(仅限日期)或“2011-10-10T14:48:00”(日期和时间)。

所以:

ISO 8601格式: yyyy-mm-dd

您的格式: dd-mm-yyyy

答案 2 :(得分:0)

var date = new Date();从当前时间开始的日期

date.setDate(arrival.getDate()+晚);将日期中的日期设置为抵达当月的日期并添加+晚。

如果今天是5月,日期是5月,如果到达是6月,则第2行不会将日期设置为6月。

试试这个:

var arrival = parseDate($('#arrivaldate').val());
var depart = new Date(arrival);
var nights = parseInt($('#nights').val());
depart.setDate(arrival.getDate()+nights);
console.log(depart);

答案 3 :(得分:0)

这可以在java脚本中完成,请尝试以下代码

    var x = new Date('your start goes here');
    var y = new Date('your end date goes here');
    var timeDiff = Math.abs(y.getTime() - x.getTime());
    var days = Math.ceil(timeDiff / (1000 * 3600 * 24));

变量天数为两天差异

答案 4 :(得分:0)

我认为你的字符串错了。 02-05-2014是2月5日,2014年4月30日不存在。

但是日期是“04-30-2014”,即4月30日。

我认为这是你的问题。