2015-08-02 6 views
0

Ниже приведен тип даты, которую я получаю от db - 2015-07-15T18:30:00.000Z. Теперь я пытаюсь добавить класс bootstap btn-info, если эта дата за 1 год до текущей даты (Date.now()), если она меньше или равна 1 году, но менее 3 месяцев с текущей даты, затем добавьте класс btn-warning, для 3 месяцев или менее добавить класс btn-danger.Применить класс к столбцу после сравнения даты в AngularJS + JavaScript

Для этого я использую ng-class на моем поле, как - ng-class="calDateDiff(exp_date)"

В calDateDiff() методе, я пытаюсь сделать преобразование, но не может знать, какой тип формата дата его представляет.

Я проверил UTC в Js, но это не так, также я пробовал Date.parse(Date.now()), но не смог узнать формат.

$scope.calDatediff = function(exp_date) { 
    // exp_date - Date.now() 
    // Here in calculation I am also not sure 
    // to handle leap years 
} 

Пожалуйста, дайте мне знать, какой тип формата даты это и какой правильный подход справиться с этим.

FYI- Я не хочу использовать Moment.js, поскольку это должно применяться только для одного поля столбца, так что это будет накладные расходы только для одного столбца для отображения.

EDIT 1 -

Ok Я получил это как сво строку ISO -

поэтому для текущей даты я считаю, что его будет -

текущая дата - new Date().toISOString()

дайте мне знать, как я могу сравнить эти две строки в течение года или 3 месяца?

+0

Не работать со строками, работа с 'date' объекта. Вы увидите, что это будет менее тревожным. – Lucian

ответ

1

Вы можете создать новый объект даты и вычесть.

Date.now() - new Date('2015-07-15T18:30:00.000Z') 
1557113984 

, если вы хотите знать, если год прошло один из способов сделать это, чтобы увеличить дату вы получили из базы данных и посмотреть, если он меньше, чем текущая дата:

var dbDate = new Date('2015-07-15T18:30:00.000Z'); 

dbDate 
Wed Jul 15 2015 11:30:00 GMT-0700 (PDT) 

dbDate.setMonth(dbDate.getMonth() + 12); 
1468607400000 

dbDate 
Fri Jul 15 2016 11:30:00 GMT-0700 (PDT) 

dbDate < Date.now() 
false 
+0

, но как я могу найти год (учитывая случай високосного года) от этого правильно? –

+0

Я думаю, что здесь 'dbDate.getMonth() + 12' должно быть 11 вместо 12, так как я проверил документы и его значение 0-11 месяца –

1

Это мне кажется как дата ISOString. Все, что вам нужно сделать, это создать новый объект типа Date, передавая эту строку в конструктор:

var dbDate = new Date("2015-07-15T18:30:00.000Z"); 

Это даст вам объект Date, с которым вы можете работать и легко сравнить его Date.now(); Я думаю, что вы может сделать все остальное самостоятельно.

Вот подробнее о Date: https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date

+0

, но как я могу найти год (учитывая случай високосного года) правильно? –

+0

Если вы посмотрите на документацию '' MDN' '' Date', вы увидите, что существует метод, называемый 'getFullYear', который вернет вам год, например. для 'Date.now()' он вернет '2015'. – Lucian

+0

ahh thx ..gotot :) +1 –

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