6

我有 2 个日期需要比较,以查看一个是否大于另一个,但它们的格式不同,我不确定比较 2 个的最佳方法。

格式为:

1381308375118(这是var futureDate)

这是由

var today = new Date(); today.setHours(0, 0, 0, 0); var futureDate = new Date().setDate(today.getDate() + 56); //56 days in the future...

另一种格式是

2013/08/26

有什么想法可以比较两者吗?

4

5 回答 5

15

在不使用 3rd 方库的情况下,您可以Date使用这两种格式创建新对象,检索毫秒数(自 1970 年 1 月 1 日午夜起)getTime() ,然后简单地使用>

new Date("2013/08/26").getTime() > new Date(1381308375118).getTime()
于 2013-08-14T09:03:27.870 回答
2

我强烈推荐使用datejs 库

因此,这可以写在一行中:

Date.today().isAfter(Date.parse('2013/08/26'))
于 2013-08-14T08:57:07.347 回答
1

我会确保我正在比较每种格式的“日期”元素并排除任何“时间”元素。然后将两个日期都转换为毫秒,只需比较这些值。你可以做这样的事情。如果日期相等,则返回 0,如果第一个日期小于第二个日期,则返回 -1,否则返回 1。

Javascript

function compareDates(milliSeconds, dateString) {
    var year,
        month,
        day,
        tempDate1,
        tempDate2,
        parts;

    tempDate1 = new Date(milliSeconds);
    year = tempDate1.getFullYear();
    month =  tempDate1.getDate();
    day = tempDate1.getDay();
    tempDate1 = new Date(year, month, day).getTime();

    parts = dateString.split("/");
    tempDate2 = new Date(parts[0], parts[1] - 1, parts[2]).getTime();

    if (tempDate1 === tempDate2) {
        return 0;
    }

    if (tempDate1 < tempDate2) {
        return -1;
    }

    return 1;
}

var format1 = 1381308375118,
    format2 = "2013/08/26";

console.log(compareDates(format1, format2));

jsfiddle 上

于 2013-08-14T09:16:17.903 回答
0

也许您可以使用Date.parse("2013/08/26")并与前一个进行比较

于 2013-08-14T08:52:17.810 回答
0

请按照以下步骤比较日期

您的每个日期都必须通过Date对象,即new Date(yourDate)。现在日期将具有相同的格式,并且这些将具有可比性

let date1 = new Date()

let date2 = "Jan 1, 2019"

console.log(`Date 1: ${date1}`)
console.log(`Date 2: ${date2}`)

let first_date = new Date(date1)
let second_date = new Date(date2)

// pass each of the date to 'new Date(yourDate)'
// and get the similar format dates

console.log(`first Date: ${first_date}`)
console.log(`second Date: ${second_date}`)

// now these dates are comparable

if(first_date > second_date) {
  console.log(`${date2} has been passed`)
}

于 2019-02-04T11:27:12.563 回答