我有一个函数可以获取到今天为止的天数。但是它可以工作,我正在使用 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/