2017-01-23 2 views
0

Я использую ag-сетку, и мы используем момент js для обработки времени.Проверьте, не превышает ли разница во времени 30 минут с использованием момента JS/angularjs

Вот сценарий: я получаю последнюю обновленную метку времени с задней стороны (JSON) в unix-время (например, это 1485120726). Моя логика заключается в проверке, если последняя обновленная метка времени меньше 30 минут. Если это так, ячейка должна быть красного цвета. Эта подсветка истечет через 30 минут (возвращается к исходному цветному блоку), если не будет новой ревизии.

Я застрял в этой точке, чтобы проверить разницу между текущей меткой времени и последней обновленной меткой времени.

Вот мой код:

highlightFAA =(params):any=>{ 
    var CurrentDate = moment().unix(); //val 1485120726-currUnixtime 
    var lastRevised= (params.node.data.lastRevised/1000); //Val 1484859960--backend is giving value in millisec so converting to sec 

    console.log("currdate", CurrentDate); 
    console.log("lastRevised", lastRevised); 
    console.log("param node", params.node.data.lastRevised); 

    //30 min is 1800 sec 
    if(Math.abs(lastRevised- CurrentDate)>1800){ 
    return {'background-color': 'black', 'text-align': 'center', 'font-weight': 'bold'}; 
    } else { 
    return {'background-color': '#FFEB3B', 'text-align': 'center', 'font-weight': 'bold'}; 
    } 

} 

Я не уверен, что если эта логика достаточно

Я попробовал еще один способ сделать это с помощью diff

highlightFAA = (params):any => { 

    var CurrentDate = moment().format('YYYY-MM-DD HH:mm'); 
    var lastRevised = moment.unix(params.data.lastRevised/1000).format('YYYY-MM-DD HH:mm'); 

    console.log("currdate", CurrentDate); 
    console.log("lastRevised", lastRevised); 
    console.log("param node", params.node.data.lastRevised); 

    var ms = moment(lastRevised).diff(moment(currdate)); 
} 

Но я получаю ошибка diff не может использоваться в строке или номере. Я не уверен, как действовать, мне нужны некоторые предложения.

** здесь обновленный код, над которым я работал, который дает разницу в минутах.

highlightFAA = (params):any=> { 

    var CurrentDate = moment().tz("UTC").format('YYYY-MM-DD HH:mm'); 
    var lastRevised = moment.unix(params.data.lastRevised/1000).tz("UTC").format('YYYY-MM-DD HH:mm'); 
    var ms = moment(CurrentDate).diff(moment(lastRevised), 'minutes'); 

    if(ms>30) { 
     return {'background-color': '#FFEB3B', 'text-align': 'center', 'font-weight': 'bold'}; 
    } else { 
     return {'color': 'black', 'text-align': 'center', 'font-weight': 'bold'}; 
    } 
} 

Но здесь он проверяет разницу во времени каждый раз, когда я перезагрузки страницы, но то, что мне нужно, это способ перепроверить разницу во времени между currtime и последним пересмотренным времени динамически и изменение цвета, как только она превышает 30 мин.

+0

'но то, что мне нужно это способ перепроверить разницу во времени между currtime и последним пересмотренным времени динамически и изменения цвета, в скором времени, когда он превышает 30 мин. ограничение времени , вы можете использовать '$ interval' – svarog

+0

, когда я использую $ timeout или interval. Я получаю ошибку, не могу найти время ожидания. даже если я инъекции службы уаг __inject = [ '$ rootScope', '$ компилировать', '$ HTTP', '$ uibModal', '$ тайм-аут' ]; конструктор ( частного $ rootScope, частные $ компилировать, частных $ HTTP, частных $ uibModal, частного тайм-аут; ) – coder

+0

вы превышая объем этого вопроса. обычно то, что вам нужно сделать, это создать новый вопрос. но я могу легко увидеть вашу проблему, изменить 'private timeout' на' private $ timeout' – svarog

ответ

2

Используйте .subtract, чтобы получить временную метку, которая была 30 минут назад

let halfAnHourAgo = moment().subtract(30, 'minutes').toDate().getTime(); 

.toDate бы преобразовать moment в обычный JS Date объекта.

.getTime вернет метку времени.

Затем проверьте, если ваша Отметка времени Unix больше или меньше, чем moment дал вам

if (yourServerDate < halfAnHourAgo) { 
    // color cell red 
} 
+0

highlightFAA = (params): any => { var CurrentDate = moment(). tz ("UTC").формат («ГГГГ-ММ-ДД ЧЧ: мм»); var faaLastRevisedDate = moment.unix (params.data.faaLastRevised/1000) .format ('YYYY-MM-DD HH: mm'); var ms = moment (CurrentDate) .diff (момент (faaLastRevisedDate), 'minutes'); console.log ("ms", ms); if (ms> 30) { return {'background-color': '# FFEB3B', 'text-align': 'center', 'font-weight': 'bold'}; } else { return {'color': 'black', 'text-align': 'center', 'font-weight': 'bold'}; } } – coder

+0

@ svarog- Я использовал код выше, чтобы проверить diff. Но это не дает возможности проверить его динамически. – coder

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