比较 javascript 中的两个日期值(作为字符串)

Comparing two date values (as string) in javascript

我有一个 'dates created' 的 table 并且此列可以按升序和降序排序,我在 JavaScript 中使用 Protractor/Jasmine 来执行我的测试。

目前我正在执行以下操作,这很有效,但我没有处理在 AM 中创建的任何日期,然后发现我的错误。

element.all(by.css('.ui-datatable-data > tr > td:nth-of-type(' + td + ')')).then(function (elements) {
        for (i = 0; i < elements.length; i++) {
            (function (index) {
                elements[index].getText().then(function (text1) {
                    if (index != elements.length - 1) {
                        elements[index + 1].getText().then(function (text2) {
                            if (text2 != undefined && text1 != "") {                                
                                if (order == 'ascending') {
                                    if (text1 < text2 || text1 == text2) {
                                        expect(true).toBeTruthy();
                                    }
                                    else {
                                        expect(text1 + ' was not less than ' + text2).toBe(false);
                                    }
                                }
                                else if (order == 'descending') {
                                    if (text1 > text2 || text1 == text2) {
                                        expect(true).toBeTruthy();
                                    }
                                    else {
                                        expect('text 1:' + text1 + '. Was not greater than:' + text2 + '.').toBe(false);
                                    }
                                }
                            }
                        });
                    }
                });
            })(i);
        }
    });

我搜索了一下,发现这个方法通过 javascript 逐个字符地比较一个字符串。所以在例子中如下:

2016 年 9 月 6 日,5:17:16 下午
2016 年 9 月 7 日,12:42:44 下午

第一个日期小于第二个日期,用上面的方法我的测试会通过

但是在这个例子中:
2016 年 9 月 6 日,5:17:16 下午
2016 年 9 月 7 日,12:42:44上午

第一个日期仍然小于第二个日期,但是一旦到达 'is P < A' 就失败了。

同样:
2016 年 9 月 6 日,5:17:16 下午
2016 年 9 月 7 日,2:下午 42:44

第一个日期再次小于第二个,但到达 'is 5 < 2' 失败。

有没有 smarter/easier 方法来完成这个?还是我真的错过了什么。

日期对象将完全符合您的预期: Date Object

使用您的样本数据的一个小例子:

var date = new Date("Sep 6, 2016, 5:17:16 PM ");

var date2 = new Date("Sep 7, 2016, 12:42:44 AM");

console.log(date < date2); // true