Отображать день с часами в Angularjs

Akash Gadhiya спросил: 28 апреля 2018 в 09:02 в: angularjs

Вот дата и время.

Date 2018-05-25T10:35:04.000Z

Ожидаемый результат = 3 дня 12 часов

Я хочу отображать дату и время время такое же, как и выше. В настоящее время я использую moment.js. Есть ли способ отображения, как показано выше?

3 ответа

Protozoid ответил: 28 апреля 2018 в 10:25

В качестве альтернативы предложению Zvi вы можете использовать фильтр даты AngularJS.

Говорите в своем контроллере, что у вас есть 2 даты:

app.controller('AppCtrl', function($scope) {
    ctrl = this;    ctrl.date1 = new Date("2018-05-22T22:35:04.000Z");
    ctrl.date2 = new Date("2018-05-25T10:35:04.000Z");
});

И в HTML, вы 'd отображает разницу с фильтром даты:

{{ctrl.date2 - ctrl.date1 | date:"dd 'days' HH 'hours'"}}

Вот рабочий пример JSFiddle

Akash Gadhiya ответил: 18 мая 2018 в 11:23
Спасибо за предложение, но оно не работает. Не могли бы вы попробовать ниже двух дат: ctrl.date1 = новая дата ("2018-05-22T22: 35: 04.000Z"); ctrl.date2 = новая дата ("2018-05-22T10: 35: 04.000Z")
Protozoid ответил: 18 мая 2018 в 11:35
Да, это не сработает, если ctrl.date1 > ctrl.date2, потому что мы выполняем вычитание date1 из date2
Zvi ответил: 28 апреля 2018 в 09:10

Вы можете использовать этот момент-точный диапазон.

Вот полный пример:

calcDiff = (date : string) => {
    let diff_in_string = '';
    let original_date = moment(date);
    let date_time_now = moment();
    let diff_in_object: any = moment-presice.preciseDiffBetweenDates(original_date, date_time_now, true);
    if (diff_in_object.days > 0) {
        diff_in_string = diff_in_string + diff_in_object.days + ' ';
        if (diff_in_object.days === 1) {
            diff_in_string += 'Day '
        } else {
            diff_in_string += 'Days '
        }
    }
    if (diff_in_object.hours > 0) {
        if (diff_in_object.days > 0) {
            diff_in_string += 'and ' + diff_in_object.hours + ' '
        } else {
            diff_in_string += diff_in_object.hours + ' '
        }
        if (diff_in_object.hours === 1) {
            diff_in_string += 'Hour '
        } else {
            diff_in_string += 'Hours '
        }
    }
    diff_in_string += 'ago'
    return diff_in_string;
}
Nate B. ответил: 30 апреля 2018 в 11:08

Вам следует рассмотреть возможность использования библиотеки HumanizeDuration (вы можете проверить этот ответ ). Он позволяет вам переводить на любой язык, на котором вы хотите разницу между двумя датами, как вы хотите.

Например:

var yourdate= moment().set({'year': 2018, 'month': 5, 'day': 22});
var today = moment();
var duration = moment.duration(today.diff(yourdate));
var humanized = humanizeDuration(duration, { units: ['d', 'h'], language: language, round: true });

Вы также можете форматировать его с помощью пропусков и т. д.