首页 > 解决方案 > 如何计算当前日期与创建日期的剩余时间?

问题描述

我需要计算到未来某个时间点的剩余时间。我new Date()用来获取当前日期,例如:

Fri Oct 09 2020 09:59:21 GMT+0200 (Central European Summer Time)

我如何计算直到此时对象的剩余时间:

{
   appointment_date: "Tue Oct 20 2020"
   appointment_hour: "08:00 - 09:00"
}

我想以月、周、日等形式显示它。如果它们为零,则应省略。

标签: javascriptmomentjs

解决方案


你可以用moment.duration()这个。

const appointment = {
  appointment_date: "Tue Oct 20 2020",
  appointment_hour: "08:00 - 09:00"
};

const appointmentString = appointment.appointment_date + " " + appointment.appointment_hour.split(' - ')[0];
const difference = moment.duration(
  moment(appointmentString, "ddd MMM DD YYYY HH:mm").diff(moment()));

const result = [];

const units = [
  "months",
  "weeks",
  "days",
  "hours",
  "minutes",
  "seconds"
];

units.forEach(function(unit) {
  // This is equal to difference.months() > 0, difference.weeks() > 0, etc
  if (difference[unit]() > 0) {
    result.push(difference[unit]() + " " + unit);
  }
});

console.log(result.join(', '));
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>


推荐阅读