在我的 JavaScript 代码中,我必须使用带有日期时间值的变量(x 和 y)。以下所有语句都返回 false:
- x < y -> 假
- x > y -> 假
- x == y -> 假
- x === y -> 假
当我调试代码时,x 和 y 具有相同的值 'Sat Jan 1 12:00:00 UTC+0100 2011' 和相同的类型。
我正在使用 IE9。
是否有不同的方法来检查两个日期时间值是否相等?
更新(代码) - 我试图提取一些相关部分,整个项目非常大:
var data;
//Dates are loaded from a webservice and returned as strings; they are parsed with the following function
data = parseD(getDataFromService());
function parseD (data) {
for (var i = 0; i < data.length; i++) {
var d = data[i];
for (var key in d) {
if (d[key] && d[key].toString().substring(0, 6) === "/Date\(")
d[key] = new Date(parseInt(d[key].toString().substr(6)));
}
}
return data;
};
function getCssForCell(row, columnID, dataContext, value) {
var css = "";
if (columnID === "VF" && value) {
if (row > 0) {
if (data[row].VF < addDays(data[row - 1].VF, 2)) {
css = "error_cell";
}
}
}
if (columnID === "VU" || columnID === "VF") {
if (dataContext.VF && dataContext.VU) {
if (dataContext.VU <= dataContext.VF) {
css = "error_cell";
}
}
}
if (columnID === "Rate" && row < (strict_mode ? data.length - 1 : data.length - 2)) { //value for Rate must be assigned
if (value === undefined || value === null) {
css = "error_cell";
}
}
if (columnID === "VF" && row < (strict_mode ? data.length - 1 : data.length - 2)) {
if (value === undefined || value === null) {
css = "error_cell";
}
}
if (columnID === "Rate" && value < 0) {
css = "error_cell";
}
//PROBLEM IN NEXT LINE
if (columnID === "VU" && row < data.length - 1 && dataContext.VU && data[row + 1] && addDays(dataContext.VU, 1) != data[row + 1].VF ) {
css = "error_cell";
}
return css;
}
function addDays(date, days) {
if (date) {
var result = new Date(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours());
result.setDate(result.getDate() + days);
return result;
}
return date;
}