比较 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
我有一个 '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