2013-08-14 4 views
4

У меня есть 2 даты, которые мне нужно сравнить, чтобы увидеть, если они больше, чем другие, но они находятся в разных форматах, и я не уверен в лучшем способе сравнения 2.javascript - сравнить даты в разных форматах

форматы:

1381308375118 (это переменная 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

Любые идеи, как я могу сравнить 2?

ответ

9

Без использования 3-й библиотеки партии, вы можете создавать новые Date объектов, используя оба эти форматы, получить количество миллисекунд (с полуночи 1 января 1970) с использованием getTime(), а затем просто использовать >:

new Date("2013/08/26").getTime() > new Date(1381308375118).getTime() 
+0

Почему downvote? Я тестирую только в FF и IE9, но это похоже на правильный способ сравнения дат, если я ничего не пропустил. – Castrohenge

+0

Вы сравниваете объекты Date не актуальные даты – Xotic750

+0

Ahh ok. Изменено для получения значения миллисекунды для каждой даты. – Castrohenge

0

Может быть, вы можете использовать Date.parse("2013/08/26") и сравнить с бывшим одним

2

Я настоятельно рекомендую использовать datejs library.

Таким образом, это может быть записано в одной строке:

Date.today().isAfter(Date.parse('2013/08/26')) 
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

Смежные вопросы