Moment.js:日期之间比较错误吗?

时间:2014-11-18 08:01:46

标签: javascript momentjs

我正在使用Moment.js来比较日期,但我得到了一些奇怪的东西。我的代码:

            var extraStackData = function (data, from_date1, end_date1) {
                var result = {};
                for (var i in data) {
                    var row = data[i];
                    if (typeof result[row['know_source']] == 'undefined') {
                        result[row['know_source']] = {};
                    }
                    result[row['know_source']][row['create_date']] = parseInt(row['sum']);
                }
//                console.log(result);
                console.log(from_date1);
                console.log(end_date1);
                console.log(from_date1 > end_date1);
                var cur_date = from_date1;
                console.log(cur_date);
                console.log(cur_date.isAfter(end_date1));
                for (var source in result) {
                    for (var cur_date = from_date; cur_date.isBefore(end_date); cur_date.add("days", 1)) {
                        console.log(cur_date);
                        if (typeof result[source][cur_date] == 'undefined') {
                            result[source][cur_date] = 0;
                        }
                    }
//                    console.log(result[source])
                }

结果如下:

Run result

根据输出,似乎变量from_date='2014-10-1'大于end_date='2014-11-18'。有人可以帮助我吗?

更新:我发现了更奇怪的事情。以下代码:

                console.log(from_date);
                console.log(end_date);
                var days = from_date.diff(end_date, 'days');
                console.log(days);

其中我使用diff来获取间隔天数,给出以下输出:

enter image description here

2 个答案:

答案 0 :(得分:0)

我遇到的问题是我的moment.js版本是2.12.0 似乎问题是由格式化方法引起的:

moment(....).format("YYYY-MM-DD");

我使用的是接近你的格式“YYYY-M-D”,然后我的比较结果表明早期时间大于后期时间。 在我初始化时刻对象时删除格式方法后,
比较工作正常。

答案 1 :(得分:0)

如果输出出错,则只需使用矩函数即可,而无需转换为特定格式。

   moment('your_date').format();