javascript - 计算到今天的天数 moment.js

标签 javascript jquery knockout.js momentjs

我有一个函数可以获取到今天为止的天数。但是它可以工作,我正在使用 moment.js 来编写和格式化 JSON 数据中的日期,我认为这会导致冲突。有没有办法使用 moment.js 做同样的事情?

这是正在运行的 JavaScript:http://jsfiddle.net/infatti/XeqPT/

// Count days due
function daysUntil(year, month, day) {
  var now = new Date(),
      dateEnd = new Date(year, month - 1, day), // months are zero-based
      days = (dateEnd - now) / 1000/60/60/24;   // convert milliseconds to days

  return Math.round(days);
}

如何使用 moment.js 完成同样的事情?

<小时/>

如果有兴趣,以下是我在不起作用时提取日期的方法。

<span class="due-date" data-bind="textualDate: DueDate"></span>

ko.bindingHandlers.textualDate = {
    update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
        var valueUnwrapped = ko.utils.unwrapObservable(valueAccessor());
        var textContent = moment(valueUnwrapped).format("MM/DD/YYYY");
        ko.bindingHandlers.text.update(element, function () { return textContent; });
    }
};

最佳答案

如果您遇到的问题是使用 moment.js 来获取两个日期之间的持续时间,那么您可以使用 diff功能如下:

var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
var diffInMs = a.diff(b); // 86400000 milliseconds
var diffInDays = a.diff(b, 'days'); // 1 day

现在,我不知道您对 KnockoutJS 是否有任何问题,但这应该确保您的计算是使用 moment.js 完成的。

为了您的兴趣,我为自己制作了一个自定义绑定(bind)处理程序,用于显示前段时间的某个时刻日期。与你的不同之处在于,我的可观察对象已经是一个时刻对象。因此,我在这里对其进行了修改,使其能够与标准日期对象一起使用:

    ko.bindingHandlers.moment = {
        update: function(element, valueAccessor) {
            var value = valueAccessor();
            var formattedValue = moment(ko.utils.unwrapObservable(value)).format('MM/DD/YYYY');
            $(element).text(formattedValue);
        }
    };

编辑:我给你做了一个fiddle举个例子。

关于javascript - 计算到今天的天数 moment.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16424702/

相关文章:

javascript - 什么会导致与 Tipsy 的焦点触发器发生冲突?

javascript - 使 div 仅固定在另一个可滚动的 div 中

javascript - knockout - foreach : Change button color on click

javascript - 如何在 Typescript 中添加 Knockout 自定义函数

javascript - 使用 Jquery Tablesorter,如何使其中一列成为页面加载时排序的默认列?

javascript - 我应该使用 FORM 标签吗?

javascript - 自定义滚动条 - 鼠标滚轮太慢

javascript - Jquery 验证插件的 select 标记顶部的错误放置

javascript - 让 div 顶部位置每 x 秒更改一次

Knockout.js 和标签内的单选按钮需要单击两次