这是日期和时间。
Date 2018-05-25T10:35:04.000Z
预期产出= 3天12小时
我想显示与上面给出相同的日期和时间。目前,我正在使用moment.js
。有没有办法像上面这样显示?
答案 0 :(得分:1)
根据Zvi的建议,您可以使用AngularJS date filter
在你的控制器中说你有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中,您会显示与日期过滤器的区别:
{{ctrl.date2 - ctrl.date1 | date:"dd 'days' HH 'hours'"}}
这是一个有效的JSFiddle example
答案 1 :(得分:0)
您可以使用此moment-precise-range。
以下是完整示例:
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;
}
答案 2 :(得分:0)
您应该考虑使用HumanizeDuration库(您可以查看this answer)。 它允许您以任何语言翻译您想要的两个日期之间的差异。
例如:
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 });
您也可以使用垫片等格式化它。