Я пытаюсь отсортировать список дат в порядке возрастания или убывания. Однако даты у меня в формате 1/12/2020 вместо 01/12/2020. Как я могу изменить этот список, чтобы даты были в правильном формате? Я включил пример дат у меня ниже:
Actual - 1/12/2020, 1/5/2020, 12/29/2019, 12/22/2019, 12/15/2019
Expected - 01/12/2020, 01/05/2020, 12/29/2019, 12/22/2019, 12/15/2019
Мой текущий код:
public static void assertSortedDates(Grid grid, String header, String format, boolean isAscending) throws Exception {
List<String> original = new ArrayList<String>();
original = grid.getColumn(header);
// if cannot find header try second row of headers
if (original == null) {
original = grid.getColumnSubtext(header);
}
Collections.replaceAll(original, null, "1 Jan 1901");
Collections.replaceAll(original, "", "1 Jan 1901");
List<String> sorted = DateHelper.sortDates(original, format, isAscending);
assertEquals("Cell Date column is not sorted: " + header + " expected: \n" + sorted + "\nbut got:\n" + original, sorted, original);
}
Код sortDates ниже:
public static List<String> sortDates(List<String> dates, String format, boolean isAscending) throws ParseException{
List<String> sortedDates = new ArrayList<>();
SimpleDateFormat sdf = new java.text.SimpleDateFormat(format);
// convert to date
Date[] arrayOfDates = new Date[dates.size()];
for (int i = 0; i < dates.size(); i++) {
arrayOfDates[i] = sdf.parse(dates.get(i));
}
// sort
if (isAscending) {
Arrays.sort(arrayOfDates);
} else {
Arrays.sort(arrayOfDates, Collections.reverseOrder());
}
// convert back to String
for (int index = 0; index < arrayOfDates.length; index++) {
sortedDates.add(sdf.format(arrayOfDates[index]));
}
return sortedDates;
}
РЕДАКТИРОВАТЬ: я уже установил формат даты ММ / дд / гггг в моем методе sortOnCallSummary, который вызывает метод assertSortedDates. Я предполагаю, что мне нужно также где-то отформатировать исходный список, но я не уверен, где это сделать.
private void sortOnCallSummary() throws Exception {
Grid grid;
String[] headersAllJobs = { "From", "To", "RHVAC Technician Schedules Complete", "MST Schedules Complete" };
for (String header : headersAllJobs) {
scrollTo(0);
runtimeState.onCallSummaryPage.tableSort(header, RandomUtils.nextBoolean());
boolean isAscending = runtimeState.onCallSummaryPage.isAscending(header);
outputHelper.takeScreenshot();
grid = runtimeState.onCallSummaryPage.getGrid();
String order = isAscending ? "ascending" : "descending";
runtimeState.scenario.write("Asserting " + header + " column is sorted in " + order + " order");
switch (header) {
case "From":
case "To":
GridHelper.assertSortedDates(grid, header, "MM/dd/yyyy", isAscending);
break;
case "RHVAC Technician Schedules Complete":
case "MST Schedules Complete":
default:
GridHelper.assertSortedAlphabetic(grid, header, isAscending);
break;
}
}
}