javascript - 如何使用 moment.js 减去两次并将其与分钟数进行比较

标签 javascript ruby momentjs

我正在努力实现一个 JS 函数来镜像我的 Ruby 代码中的函数。

Ruby 代码:

def autoextending?
  online_only? && ((actual_end_time - Time.now) <= autoextend_increment.minutes)
end

JS 代码:

item.autoextending = function() {
  var self = this;
  var end_time = moment(self.actual_end_time);
  return (self.online_only && self.status == "accepting_bids" && ((end_time - moment()) <= self.autoextend_increment*60));
};

一些信息:

  • self.autoextend_increment 将返回一个数字,例如 5,它代表分钟数。
  • 我需要(end_time - moment())的评估以秒数形式返回差异,以便我可以将其与 autoextend_increment 进行比较正确地

感谢任何帮助。

最佳答案

moment使用 Date 在幕后,它作为原始值表示为自纪元以来的时间(以毫秒为单位)。所以我们马上就知道 moment 中的算术将产生以毫秒为单位的值:

item.autoextending = function() {
    var self = this;
    var end_time = moment(self.actual_end_time);
    return (self.online_only && self.status == "accepting_bids" && (((end_time - moment()) / (1000 * 60)) <= self.autoextend_increment));
};

((end_time - moment()) / (1000 * 60))将为您提供一个以分钟为单位的值(一秒为 1000 毫秒,一分钟为 60 秒)。

你说self.autoextend_increment已经是几分钟了,所以不需要额外的算术。如果你真的想以秒为单位进行比较,你可以:((end_time - moment()) / 1000) <= self.autoextend_increment * 60

您也可以将转换写为 (end_time - moment()) / 6000但出于演示目的,我对这些数字进行了分割。

关于javascript - 如何使用 moment.js 减去两次并将其与分钟数进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39517985/

相关文章:

javascript - 获取vscode中任务文件的相对路径

javascript - 用钩子(Hook)在悬停时显示一个下拉菜单

ruby - 使用类作为方法

ruby-on-rails - Nginx Rails 错误

Javascript getTimezoneOffset 与时刻 utcOffset

javascript - 在 MomentJS 中设置时区

javascript - 以编程方式关闭/退出 PWA

javascript - JavaScript 和 jQuery 计算器

ruby - 如何在 Ruby 中解析 YAML 文件?

javascript - 为什么使用 zone() 时 momentjs isDST() 返回错误的时间