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

时间:2016-09-19 18:29:25

标签: javascript date jasmine protractor string-comparison

我有一张创建日期的表格'此列可按升序和降序排序,我在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 AM

第一个日期仍然小于第二个日期,但一旦达到,则P&lt;甲&#39;它失败了。

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

第一个日期再次小于第二个日期但是得到的结果是5&lt; 2&#39;并失败。

有更智能/更简单的方法来实现这一目标吗?或者我在这里真的错过了什么。

1 个答案:

答案 0 :(得分:3)

日期对象将完全符合您的预期: 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