我已经用Google搜索了负载并读取了负载,到目前为止浪费了大约3个小时。我无法相信它如此艰难。
我有一个Javascript / Jquery应用程序,我安装了moment.js插件。 我正在编写POS应用程序,我需要计算两个日期之间的天数差异,因此我可以警告用户特定的退回项目可能太旧而无法返回。
我在JS中发现这个代码看起来不错,似乎是流行的方式,虽然我无法让它工作
{
"size": 0,
"aggs": {
"count": {
"nested": {
"path": "results"
},
"aggs": {
"top_reverse_nested": {
"reverse_nested": {}
}
}
}
}
}
我也尝试使用Moment.js,这看起来非常整洁
var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds
var firstDate = new Date(2008,01,12);
var secondDate = new Date(2008,01,22);
var diffDays = Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay)));
后者将是我的首选技术。但在我的情况下,我得到错误“oDate.diff不是一个函数”,这是我的代码......
var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
var x = a.diff(b);
我怀疑问题与oDate变量的格式有关。但我无法理解为什么。
EDIT。顺便说一句,我用console.log检查了todaysDate和oDate的值,它们是 todaysDate - 2016,09,14 oDate - 2016,09,12
有什么建议吗? 干杯
答案 0 :(得分:4)
在采取差异之前不要使用格式化功能。 。 .on你称之为格式,它不再是时刻的对象了。 format函数将其转换为字符串。
todaysDate = moment(new Date());
oDate = moment(result.Order.created);
var diffDays = oDate.diff(todaysDate, 'days');
答案 1 :(得分:2)
您可以将日期转换为unix时间戳(moment.unix()
),减去两个时间戳并使用moment.duration()
检查持续时间,这与您的第一次尝试类似
答案 2 :(得分:1)
你尝试过这样的事吗?
[Double]
在这里,我使用[CGFloat]
和var startDate = new Date(2008, 01, 12);
var endDate = new Date(2008, 01, 22);
var duration = moment.duration(endDate.diff(startDate));
var diffDays = duration.asDays();
来获取两个日期持续时间之间的间隔,然后moment.duration()
以获得天数的结果......
答案 3 :(得分:0)
你可以试试这个:
function showDays(firstDate,secondDate){
var startDay = new Date(firstDate);
var endDay = new Date(secondDate);
var millisecondsPerDay = 1000 * 60 * 60 * 24;
var millisBetween = startDay.getTime() - endDay.getTime();
var days = millisBetween / millisecondsPerDay;
// Round down.
alert( Math.floor(days));
}