【问题标题】:isBefore function in momentjs is not workingmomentjs 中的 isBefore 函数不起作用
【发布时间】:2020-05-07 19:21:44
【问题描述】:

我尝试检查 h:mm 中的某个时间是否在另一个具有相同格式的时间之前。但是,控制台向我显示一个错误,说 isBefore 不是一个函数,或者它总是打印错误。我在 Ionic 3/Angular 中使用此代码。

如果我编写如下代码,控制台会打印错误。我尝试了不同的参数而不是小时。

  var start_time = moment('20:00', 'h:mm').format('LT');
  var last_time = moment('21:59', 'h:mm').format('LT');
  var check_last = moment(start_time).isBefore(last_time, 'hour');
  console.log(check_last);

如果我编码如下。如下链接所示。控制台给我的错误是

  var start_time = moment('20:00', 'h:mm').format('LT');
  var last_time = moment('21:59', 'h:mm').format('LT');
  var check_last = start_time.isBefore(last_time, 'hour');
  console.log(check_last);

Moment.js isBefore function not working as expected

在momentjs的官方网站上,我没有弄清楚如何比较两次。可以给我支持一下吗?

【问题讨论】:

  • 为什么你格式化它?
  • 因为我只从 json 文件中获得时间格式。通常时间是可变的。那你觉得我不需要格式化吗?

标签: ionic3 momentjs angular2-moment


【解决方案1】:

Moment 的 format() 返回一个字符串,因此您不能在 time.format('hh:mm') 之类的内容上使用 isBefore,这就是您得到 isBefore 不是函数的原因。

同样根据文档本身,moment().isBefore() 具有未定义的行为,不应使用!如果代码运行速度很快,那么最初创建的时刻将与在 isBefore 中创建的时刻相同以执行检查,因此结果将为 false

尝试不格式化以获得所需的输出

var start_time = moment("20:00", "h:mm");
var last_time = moment("21:59", "h:mm");
var check_last = moment(start_time).isBefore(last_time, "hour");
console.log(check_last);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>

【讨论】:

    【解决方案2】:

    所以isBefore() 没有按预期工作的原因是格式。格式化时间会返回一个字符串,比较时可能会出错。

    如果将时间保存为矩对象,那么矩可以准确地比较它们。比较后可以格式化。这是一个例子:

    var start_time = moment('20:00', 'h:mm');
    var last_time = moment('21:59', 'h:mm');
    var check_last = moment(start_time).isBefore(last_time, 'hour');
    console.log(check_last);
    // format at end
    // return [
    //   start_time.format('LT'),
    //   last_time.format('LT'),
    // ];
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.25.3/moment.min.js"></script>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-04
      • 2017-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多