Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IE8中的JavaScript日期比较失败_Javascript_Date_Internet Explorer 8_Date Comparison - Fatal编程技术网

IE8中的JavaScript日期比较失败

IE8中的JavaScript日期比较失败,javascript,date,internet-explorer-8,date-comparison,Javascript,Date,Internet Explorer 8,Date Comparison,我有一个将日期从DD/MM/YYYY转换为YYYY-MM-DD的函数 这在IE8以外的所有浏览器中都有效,出于某种原因,当创建新的日期对象时,它会返回NaN 守则的基本实施 像这样初始化你的约会。它将在所有浏览器中工作 var startDate = new Date(dateFragements[2] , dateFragements[1] , dateFragements[0]); 有4种方法可以使用构造函数初始化Date对象 new Date() // current date and

我有一个将日期从DD/MM/YYYY转换为YYYY-MM-DD的函数

这在IE8以外的所有浏览器中都有效,出于某种原因,当创建新的日期对象时,它会返回NaN

守则的基本实施


像这样初始化你的约会。它将在所有浏览器中工作

var startDate = new Date(dateFragements[2] , dateFragements[1] , dateFragements[0]);
有4种方法可以使用构造函数初始化
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)

日期对象中的字符串并不意味着它将接受所有日期字符串。如果你想给一个字符串作为输入,给这个。(dateFragements[2]+'/'+dateFragements[1]+'/'+dateFragements[0]);。(
/
作为分隔符)所有浏览器都支持它

IE8希望将
'/'
作为日期字符串中的分隔符,这就是函数失败的原因。
var startDate = new Date(dateFragements[2] , dateFragements[1] , dateFragements[0]);
可以简化为:

var compareDate = function(value){
 var dateFragements = value.split('/');
 if (dateFragements.length == 3) {
  var currentDate = function(){ return (this.setHours(0),
                                        this.setMinutes(0),
                                        this.setSeconds(0),
                                        this); }.call(new Date)
     ,startDate = new Date([dateFragements[2],
                            dateFragements[1],
                            dateFragements[0]].join('/'));
  return startDate>=currentDate;
 }   
}
接受以下格式(仅限):


这似乎已经解决了问题。你知道为什么IE8在用字符串初始化日期对象时失败吗?接受字符串并不意味着它将接受所有字符串。如果你想给一个字符串作为输入,给这个。(dateFragements[2]+'/'+dateFragements[1]+'/'+dateFragements[0]);。它将在所有浏览器中得到支持。我认为您可以通过以下方式之一找到答案:或者:简单的谷歌搜索。。。
new Date(dateString)
"October 13, 1975 11:13:00"
"October 13, 1975 11:13"
"October 13, 1975"