-
Anonymous
Странное поведение CompareTo(GregorianCalendar c)
Сообщение
Anonymous »
Не могли бы вы сказать мне, почему следующий код:
Код: Выделить всё
int a = new GregorianCalendar(2015,3,31,7,45).compareTo(
new GregorianCalendar(2015,4,1,7,45);
System.out.println(a);
выводит 0?
Есть ли способ заставить это работать правильно?
PS: мне нужно отсортировать строки по дате, и я использую этот компаратор:
Код: Выделить всё
array.sort(new Comparator() {
@Override
public int compare(String o1, String o2) {
GregorianCalendar cal1 = new GregorianCalendar(Integer.parseInt(o1.replaceAll(p, "$7")),
Integer.parseInt(o1.replaceAll(p, "$6")), Integer.parseInt(o1.replaceAll(p, "$5")),
Integer.parseInt(o1.replaceAll(p, "$8")), Integer.parseInt(o1.replaceAll(p, "$9")));
GregorianCalendar cal2 = new GregorianCalendar(Integer.parseInt(o2.replaceAll(p, "$7")),
Integer.parseInt(o2.replaceAll(p, "$6")), Integer.parseInt(o2.replaceAll(p, "$5")),
Integer.parseInt(o2.replaceAll(p, "$8")), Integer.parseInt(o2.replaceAll(p, "$9")));
return cal1.compareTo(cal2);
}
});
Он использует регулярные выражения, но сортируется правильно, и только предоставленные даты отсортированы неправильно.
Подробнее здесь:
https://stackoverflow.com/questions/293 ... calendar-c
1733265897
Anonymous
Не могли бы вы сказать мне, почему следующий код:
[code]int a = new GregorianCalendar(2015,3,31,7,45).compareTo(
new GregorianCalendar(2015,4,1,7,45);
System.out.println(a);
[/code]
выводит 0?
Есть ли способ заставить это работать правильно?
PS: мне нужно отсортировать строки по дате, и я использую этот компаратор:
[code]array.sort(new Comparator() {
@Override
public int compare(String o1, String o2) {
GregorianCalendar cal1 = new GregorianCalendar(Integer.parseInt(o1.replaceAll(p, "$7")),
Integer.parseInt(o1.replaceAll(p, "$6")), Integer.parseInt(o1.replaceAll(p, "$5")),
Integer.parseInt(o1.replaceAll(p, "$8")), Integer.parseInt(o1.replaceAll(p, "$9")));
GregorianCalendar cal2 = new GregorianCalendar(Integer.parseInt(o2.replaceAll(p, "$7")),
Integer.parseInt(o2.replaceAll(p, "$6")), Integer.parseInt(o2.replaceAll(p, "$5")),
Integer.parseInt(o2.replaceAll(p, "$8")), Integer.parseInt(o2.replaceAll(p, "$9")));
return cal1.compareTo(cal2);
}
});
[/code]
Он использует регулярные выражения, но сортируется правильно, и только предоставленные даты отсортированы неправильно.
Подробнее здесь: [url]https://stackoverflow.com/questions/29395060/weird-behaviour-of-comparetogregoriancalendar-c[/url]