使用 vuetify 时间选择器和 momentjs 获取两次之间的差异

Get difference between two times using vuetify time picker and momentjs

我正在构建一个日程安排应用程序,但我无法计算两次之间的差异。一个时间是现在,我使用 momentjs 获得,另一个时间是用户从给定地点出发的时间,使用 vuetifyjs 时间选择器。获得这两个时间的目的是计算从现在到出发时间之间的剩余时间。因此,例如,如果当前时间现在是星期三下午 4 点,出发时间是星期四下午 2 点,则预期输出为 22 小时。现在,我像这样格式化每个时间:

let now = moment().format("HH");
let departureHour = moment(this.departureTime, "HH").format("HH");

当我查看这些变量的各个输出时,我看到两个字符串或矩实例,例如 'now': '16', 'departureHour': '14'。但是,当我尝试像这样获得它们的差异时,

return departureHour.diff(now, "hours");

我收到一条错误消息:

[Vue warn]: Error in render: "TypeError: departureHour.diff is not a function"

我也试过像这样格式化变量

let now = moment.utc().format("HH");
let departureHour = moment.utc(this.departureTime, "HH").format("HH");

但是我得到了同样的错误。

我尝试了一些我发现的解决方案,例如 , this one, and this ,但其中 none 似乎对我有用。

任何帮助将不胜感激。如果您还有其他需要了解的信息,请告诉我。

希望我的问题不会太乱。

谢谢。

您收到的错误表明 departureHour 不是矩对象。这是一个String

您可能还会遇到计算错误,因为 now 不在 utc 中,而 departureHour 是。

最后警告,我不是你期望 departureHour 初始化的。

如果您想查看两个矩对象之间的差异,以小时为单位:

const now = moment.utc();
const departureHour = moment.utc(this.departureTime, "HH");

const diff = departureHour.diff(now, "hours"));

如果你只是想要两个数字之间的差异,使用数字减法可能会更好:

const now = Number(moment.utc().format("HH"));
// assuming departure time is in "HH" format, a number between 00 to 24
const diff = Math.abs(Number(departureTime) - now);