Как вычесть временную метку firebase с текущим временем и проверить, превышает ли она 5 минут в Angular

У меня есть приложение angular, в котором я храню записи в firebase с меткой времени, используя firebase.database.ServerValue.TIMESTAMP

Теперь я хочу проверить, превышает ли временная метка, добавленная в базу данных, пять минут.

Я попытался использовать момент в своем компоненте, но он просто не работал. Это дает ложные данные. Я предполагаю, что данные, хранящиеся в Firebase, находятся в той эпохе, в которой, как и я, в Индии, так как заставить момент работать в Angular.

Я использую Angular 2 Moment.

Это то, что я пробовал

import * as moment from 'moment/moment';

      edit(i:number){
        const val = moment.unix(this.comments[0].createdAt);// the value is a epoch time that is the standard that is stored in firebase
        const present = moment().unix();

        console.log(moment.duration(val.diff(present)));
      }

Ценность этого комментария при его использовании в дате

let ts = new Date(this.comments[0].createdAt * 1000); = среда, 5 августа 49474 20:09:20 GMT + 0530 (индийское стандартное время)

где на данный момент похоже - вторник, 4 июля 2017 г., 14:56:46 GMT + 0530 (стандартное индийское время)

Пожалуйста, помогите, почему его данные комментариев не исчезают со временем, когда это должно быть 3 июля, поскольку они были добавлены в тот день на firebase


person Rahul    schedule 03.07.2017    source источник
comment
каково значение this.comments[0].createdAt?   -  person ruedamanuel    schedule 03.07.2017
comment
Это эпоха времени, которая хранится в базе данных firebase.   -  person Rahul    schedule 03.07.2017
comment
в миллис (т.е. тип javascript) или в секундах?   -  person ruedamanuel    schedule 03.07.2017
comment
Метка времени unix в секундах   -  person Rahul    schedule 03.07.2017


Ответы (1)


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

let now = new Date();
let ts = new Date(this.comments[0].createdAt * 1000);
let diff = now.getTime() - ts.getTime();

console.log(diff > 5 * 60 * 1000);
person ruedamanuel    schedule 03.07.2017
comment
его dosent показывает правильную информацию, сообщение хранится в последний день, но все же консоль .log говорит false, где больше, чем минут, должно говорить true, правильно - person Rahul; 04.07.2017
comment
Когда я консоль регистрирую их ts - среда, 05 августа, 49474 20:09:20 GMT + 0530 (стандартное время Индии), а теперь - вторник, 4 июля 2017 года, 14:56:46 GMT + 0530 (стандартное время Индии). - person Rahul; 04.07.2017
comment
да, потому что, когда вы регистрируете объект даты, он применяет toString () к самому себе, что является читаемой строкой, поэтому вы используете .getTime () в diff, чтобы он преобразовывал дату в миллисекунды - person ruedamanuel; 05.07.2017