java - 时间和/或日期的排序
问题描述
我试图弄清楚如何使用 java 和 selenium 验证时间和/或日期的排序。这是我的情况......所以如果我今天收到一封电子邮件,我的收件箱会显示收到邮件的时间。但是,如果我昨天收到一封电子邮件,收件箱会显示昨天的日期。我试图验证以降序排列,带有时间的电子邮件将首先出现,然后是带有日期的电子邮件。
如果只有日期,这是我的代码。有人可以帮我弄清楚如何验证时间吗?
protected void validateDateDescendingOrder(String className) {
// create a list
List<WebElement> messageElements = driver.findElements(By.cssSelector("div.scrollable-panel div." + className));
List<String> messageList = new ArrayList<String>();
for (WebElement element : messageElements) {
messageList.add(element.getText());
}
// create a new list and sort
List<String> sortedmessageList = new ArrayList<String>();
sortedmessageList.addAll(messageList);
Collections.sort(sortedmessageList, new Comparator<String>() {
DateFormat f = new SimpleDateFormat("MM/dd/yy");
@Override
public int compare(String o1, String o2) {
try {
return f.parse(o2).compareTo(f.parse(o1));
} catch (ParseException e) {
throw new IllegalArgumentException(e);
}
}
});
// compare the original list order with the sorted list to make sure they match
assertEquals(sortedmessageList, messageList);
}
解决方案
希望这对您使用 java 8 有所帮助
List<String> date = Arrays.asList("2015-11-09", "2015-11-11", "2015-11-08", "2015-11-08");
List<LocalDate> convetedSortedDate = date.stream().map(LocalDate::parse).sorted().collect(Collectors.toList());
//或者
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy '@'hh:mm a");
Collections.sort(datestring, (s1, s2) -> LocalDateTime.parse(s1, formatter).
compareTo(LocalDateTime.parse(s2, formatter)));
推荐阅读
- python - 数组排序、切片和反向返回空
- python - 在字符串中查找重复模式
- javascript - 替代 eval() 从服务器执行自动生成的 JS 代码
- go - 如何在杜松子酒的上下文中获得匹配的路线?
- c# - 带有继承的asp.net核心构造函数注入
- python - 从 Tensorflow 对象检测 API 中获得的分数计算 mAP
- arrays - this.setState 只提取数组中的最后一个值
- python - 在python中创建一个通用字典,从多对列表中获取键值对
- javascript - AngularJS - 如何在按钮单击时获取对象
- reactjs - 从道具添加动态本地图像到src