【问题标题】:Not getting time difference using MomentJS没有使用 MomentJS 获得时差
【发布时间】:2020-07-27 05:06:16
【问题描述】:

大家好,我正在尝试使用 MomentJS 获取时间差异,以便构建倒计时时钟。 问题是我收到了这个错误:

弃用警告:提供的值不是可识别的 RFC2822 或 ISO 格式。 moment 构造回退到 js Date(),这在所有浏览器和版本中并不可靠。不鼓励使用非 RFC2822/ISO 日期格式,并将在即将发布的主要版本中删除。请参阅http://momentjs.com/guides/#/warnings/js-date/ 了解更多信息。 论据: [0] _isAMomentObject: true, _isUTC: false, _useUTC: false, _l: undefined, _i: 00:00, _f: undefined, _strict: undefined, _locale: [object Object]

我的 console.log 是 NaN

我做错了什么?

这里是 TS:

now: any;

ngOnInit() {
     this.now = parseInt(moment().format('h'));
}
///
startTimer() {
    const endTime = moment('10AM', ['h:mm A']).format('HH:mm');
    const a = moment(this.now, 'HHmm').diff(endTime, 'hours');
    console.log(a);
}

【问题讨论】:

  • 不要将警告与错误混淆。那只是告诉您有一天该功能将被删除。与此同时,它仍然可以工作。
  • 嘿@JohnLord 谢谢,你说得对,我关注的是console.log 结果。谢谢你:D

标签: javascript angular typescript momentjs angular-moment


【解决方案1】:

首先你需要在里面运行,如果不是你的最终是不变的。那怎么算。

startTimer(from,to){
    const now = moment(from, ['h:mm A']).format('H:mm:ss')
    const end = moment(to, ['h:mm A']).format('H:mm:ss');
    var a ;
    if(now>end){
            a = moment.utc(moment(now,['H:mm']).diff(moment(end,['H:mm']))).format("H:mm");
    }
    else{
          a ="-"+ moment.utc(moment(end,['H:mm']).diff(moment(now,['H:mm']))).format("H:mm");
    }
    return a
}

在您的 html 页面中调用 startTimer('11AM','2PM')

【讨论】:

  • 嘿@Çağrı 谢谢你,但结果不正确:( 所以如果const now = '11:00:00', const endTime = 14:00:00 差异应该是3:00:00 对吧?但我得到的是'18:29' .
【解决方案2】:

像这样使用减法而不是差异:

const endTime = moment('10:00 AM', ['h:mm A']).format('HH:mm');
const a = moment(moment(this.now, 'h:mm A').subtract(endTime, 'hours')).format('hh');
console.log(a);

【讨论】:

  • 嘿@Sharanya 谢谢,但这也没有返回正确的结果。因此,如果我的结束时间是下午 2 点,现在是上午 11 点,那么结果是 11 而不是 3
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多