Как метод compareTo()
для дат работает здесь в Java?Я знаю, что при сравнении двух дат результат всегда будет 0
, если он равен, 1
, если сравниваемая дата внутри параметра compareTo()
старше, и -1
, если дата внутри параметра более поздняя.
//Just an example
String[] da = {"01/14/1975", "08/20/1975", "08/20/1975"};
SimpleDateFormat f = new SimpleDateFormat("MM/dd/yyyy");
Date d1 = new Date();
Date d2 = new Date();
//this outputs 1 because d2 is older than d1
d1 = f.parse(da[1]);
d2 = f.parse(da[0]);
System.out.println(d1.compareTo(d2));
//this outputs 0 because dates are the same
d1 = f.parse(da[1]);
d2 = f.parse(da[2]);
System.out.println(d1.compareTo(d2));
//this outputs -1 because d2 is more recent than d1
d1 = f.parse(da[0]);
d2 = f.parse(da[1]);
System.out.println(d1.compareTo(d2));
Теперь я хочу сравнить даты без использования метода compareTo()
или какого-либо встроенного метода в Java.В максимально возможной степени я хочу использовать только базовые операторы в java.
Что такое вычисление или алгоритм метода compareTo()
при сравнении дат, которые позволяют ему возвращать -1
, 0
,и 1
?
Редактировать: В случае с примером проблемы из моей книги использование java.util.Date запрещено, предполагается, что нужно создать свой собственныйобъект даты, подобный этому:
public class DatesObj
{
protected int day, month, year;
public DatesObj (int mm, int dd, int yyyy) {
month = mm;
day = dd;
year = yyyy;
}
public int getMonth() { return month; }
public int getDay() { return day; }
public int getYear() { return year; }
}
Теперь, как мне сравнить это, как будто они int
и определить, какой стар, а какой новее ??