知道为什么这个功能在Internet Explorer中无法正常工作?
function days_between(check_in, check_out)
{
var oneDay = 24*60*60*1000;
var firstDate = new Date(check_in);
var secondDate = new Date(check_out);
var diffDays = Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay));
return diffDays;
}
在Internet Explorer中,它显示 NaN 。
我以这种日期格式调用此函数
var check_in = "2012-02-09";
var check_out = "2012-02-12";
var range = days_between(check_in, check_out);
此致
答案 0 :(得分:2)
IE不支持Date.parse
或将"2012-02-09"
(带ISO日期)传递给new Date
,您需要自己解析并传递new Date( 2012, 1, 9 )
或使用{{ 3}}
答案 1 :(得分:1)
您在创建日期对象时遇到问题
使用Date()构造函数创建日期对象。
实例化日期有四种方式:
new Date() // current date and time
new Date(milliseconds) //milliseconds since 1970/01/01
new Date(dateString)
new Date(year, month, day, hours, minutes, seconds, milliseconds)
以上大多数参数都是可选的。未指定,导致传入0。
创建Date对象后,可以使用许多方法对其进行操作。大多数方法允许您使用本地时间或UTC(通用或GMT)时间来获取和设置对象的年,月,日,小时,分钟,秒和毫秒。
所有日期均以毫秒为单位,从世界时间1970年1月1日00:00:00(UTC)开始,每天包含86,400,000毫秒。
实例化日期的一些例子:
var today = new Date()
var d1 = new Date("October 13, 1975 11:13:00")
var d2 = new Date(79,5,24)
var d3 = new Date(79,5,24,11,33,0)
答案 2 :(得分:1)
Date
不支持您传递的日期格式(yyyy-mm-dd)。请参阅说明here,说明它必须采用parse
可解析的格式。请参阅此处了解可接受的解析格式:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Date/parse
答案 3 :(得分:0)
您以不正确的格式提供日期参数。您可以期望javascript支持这些格式:
MM-dd-yyyy
yyyy/MM/dd
MM/dd/yyyy
MMMM dd, yyyy
MMM dd, yyyy
要解决您的问题,您可以使用replace()
格式化参数。
function days_between(check_in, check_out)
{
var firstDate = new Date(check_in.replace('-' , '/'));
var secondDate = new Date(check_out.replace('-' , '/'));
var diffDays = Math.abs((firstDate.getTime() - secondDate.getTime()) / 86400000);
return diffDays;
}
顺便说一下,你可以用常数替换oneDay。