2016-10-07 4 views
0

Я пытаюсь написать кусок кода, аналогичного ниже в AngularJS:Сравнения Даты различных форматов

$scope.isAfterToday= function(inputDate){ 
    if(inputDate > Date.now().toString()){ 
     return true; 
    } else { 
     return false; 
    } 
} 

Однако, проблема заключается в том, что параметр inputDate поставляется в формате «2016-10-12T00 : 00: 00 ", который отличается от формата, который выходит из функции Date.now(). Есть ли простой способ конвертировать между этими двумя форматами, кроме грубой силы, для разбора месяца, дня и года из каждого и сравнения двух?

Благодарим за помощь!

+2

Вы можете использовать библиотеку как [Moment.js] (http://momentjs.com/) –

+0

Посмотрите на [документации] (http://stackoverflow.com/documentation/javascript/265/date/1204/compare-date-values ​​# t = 2016100721095820732) –

+0

Возможный дубликат [Сравнить две даты с JavaScript] (http://stackoverflow.com/questions/492994/compare-two-dates-with-javascript) –

ответ

0

Вы можете обернуть inputDate в стандартный объект Date, например:

new Date("2016-10-12T00:00:00").getTime(); // you'll get 1476230521000 

И new Date().toISOString(); не обратить

+0

«* вы получите 1476230521000 *» только для пользователей в том же часовом поясе, если строка обрабатывается текущими правилами. – RobG

1
$scope.isAfterToday=function(inputDate){ 
    //First get the first time *after* today: 
    var t = new Date().setHours(0,0,0,0);//0 seconds into this morning 
    t.setDate(t.getDate()+1); //midnight tomorrow 
    new Date(inputDate) > t); 
}; 

Нет внешней библиотеки необходимо. Вы можете напрямую сравнивать объекты Date, а конструктор Date подходит для ввода всех типов допустимых строк даты в качестве входных данных.

Для Date объекта сравнения, вы можете использовать общие цифровые компараторы:

< 
> 
<= 
>= 

Не используйте ==, хотя, это будет сравнивать свои ссылки на объекты, а не их значения.

+0

"* midnight tonight *" обычно будет тем, что происходит в конце дня. Установка часов на 0 - это полночь в начале дня, так что действительно «полночь этим утром». – RobG

+0

@RobG Спасибо, исправил мой комментарий – LinuxDisciple

0

Объект Date можно преобразовать в число миллисекунд, которое вы можете сравнить.

var convertedInput = new Date(inputDate); 

Если вам нужно пойти в другую сторону, и на выходе то, что выглядит хорошо, есть технически не форматированный вывод. Но синтаксический анализ миллисекунд в датах - это не так уж сложно!

var today = new Date(); 
var day = today.getDate(); 
var month = today.getMonth() + 1; //Month is 0-based for some reason 
var year = today.getFullYear(); 
var datenow = year + "-" + month + "-" + day; 
Смежные вопросы