我有一个日期为Sun Apr 07 2019 00:00:00 GMT-0300
的以下字符串值,并且我需要与以下日期格式为2019-04-08T03:00:00.000Z
的比较,请注意两者都是同一天,我需要将它们进行比较并返回相等的天数
但是我不知道如何使用javascript做到这一点,有帮助吗?
我试图做这样的事情,但它并没有使我成真:
if (input) {
//input.value = "Sun Apr 07 2019 00:00:00 GMT-0300 (Horário Padrão de Brasília)"
var situation = angular.isArray(item.situation) ? item.situation : [item.situation];
// situation =
//[
// 0: "2019-04-08T03:00:00.000Z"
// 1: "2019-04-13T03:00:00.000Z"
//]
if (!angular.isArray(input.value)) {
condition = situation.indexOf(input.value) >= 0;
} else if (angular.isArray(input.value)) {
condition = $window._.intersection(situation, input.value).length > 0;
}
}
if (condition) {
break;
}
//input.value = "Sun Apr 07 2019 00:00:00 GMT-0300 (Horário Padrão de Brasília)"
situation =
[
0: "2019-04-08T03:00:00.000Z"
1: "2019-04-13T03:00:00.000Z"
]
答案 0 :(得分:3)
2019年4月7日星期日00:00:00 GMT-0300
2019-04-08T03:00:00.000Z
请注意,两者都是同一天
不,不是。
您可以将它们都转换为ISO字符串,而只是将它们的日期部分作为字符串进行比较(如果我正确地理解了这个问题,您只想比较日期,没有时间):
function isSameDate(date1, date2) {
const [d1, ] = (new Date(date1)).toISOString().split('T');
const [d2, ] = (new Date(date2)).toISOString().split('T');
return d1 === d2;
}
答案 1 :(得分:0)
将所有值转换为Date
对象并进行比较。使用框架/库来执行此操作,因为手动将字符串解析为日期有很多地方可能会出错。
当前,您正在比较文字String
。因为"2019-04-08T03:00:00.000Z"
和"2019-04-13T03:00:00.000Z"
都不匹配"Sun Apr 07 2019 00:00:00 GMT-0300 (Horário Padrão de Brasília)"
,所以第二条if
语句失败。
答案 2 :(得分:-1)
从字符串中建立一个日期,然后比较天数(即从纪元以来的秒数/一天中的秒数):
const sameDay = (dateString1, dateString2) => {
let time1 = (new Date(dateString1)).getTime();
let time2 = (new Date(dateString2)).getTime();
return Math.floor(Math.abs((time1-time2))/(1000*60*60*24))==0;
}
console.log(
sameDay('Sun Apr 07 2019 00:00:00 GMT-0300 (Horário Padrão de Brasília)','2019-04-08T03:00:00.000Z'),
sameDay('Sun Apr 07 2019 00:00:00 GMT-0300 (Horário Padrão de Brasília)','2019-04-13T03:00:00.000Z'),
);