/*
* DateUtils.java
*
* Created on 9 ������ 2006 �., 15:16
*
*/
package datechooser.model;
import java.util.Calendar;
/**
* Service class for dates, ignores time.<br>
* ��������� ����� ��� ������ � ������ ��� ����� �������.
* @author Androsov Vadim
* @since 1.0
*/
public class DateUtils {
private static Calendar calendarCash = null;
/**
* Extract day.<br>
* �������� ����.
* @since 1.0
*/
public static int getDay(Calendar date) {
return date.get(Calendar.DAY_OF_MONTH);
}
/**
* Extract month.<br>
* �������� �����.
* @since 1.0
*/
public static int getMonth(Calendar date) {
return date.get(Calendar.MONTH);
}
/**
* Extract year.<br>
* �������� ���.
* @since 1.0
*/
public static int getYear(Calendar date) {
return date.get(Calendar.YEAR);
}
/**
* Compares dates (time is ignored).<br>
* ���������� ���� ��� ����� �������.
* @since 1.0
*/
public static boolean equals(Calendar dat1, Calendar dat2) {
return (getDay(dat1) == getDay(dat2)) &&
(getMonth(dat1) == getMonth(dat2) &&
(getYear(dat1) == getYear(dat2)));
}
/**
* Is first date before second (time is ignored).<br>
* ��������� ������������ �� ���� ���� ������ ��� ����� �������.
* @since 1.0
*/
public static boolean before(Calendar dat1, Calendar dat2) {
if (getYear(dat1) < getYear(dat2)) {
return true;
} else if (getYear(dat1) > getYear(dat2)) {
return false;
} else if (getMonth(dat1) < getMonth(dat2)) {
return true;
} else if (getMonth(dat1) > getMonth(dat2)) {
return false;
} else if (getDay(dat1) < getDay(dat2)) {
return true;
} else {
return false;
}
}
/**
* Is first date after second (time is ignored).<br>
* ��������� ������� �� ���� ���� �� ������ ��� ����� �������.
* @since 1.0
*/
public static boolean after(Calendar dat1, Calendar dat2) {
if (!before(dat1, dat2)) {
return !equals(dat1, dat2);
} else {
return false;
}
}
/**
* Assign source date to target (time is ignored).<br>
* ������������� ������� ���� ������ ���������.
* @since 1.0
*/
public static void assign(Calendar target, Calendar source) {
target.setTime(source.getTime());
}
/**
* Are dates near (time is ignored).<br>
* ���������, �������� �� ���� ���� � ������ ��� ����� �������.
* @since 1.0
*/
public static boolean isNear(Calendar dat1, Calendar dat2) {
Calendar before = null;
Calendar after = null;
if (before(dat1, dat2)) {
before = dat1;
after = dat2;
} else {
before = dat2;
after = dat1;
}
initializeCash(before);
calendarCash.add(Calendar.DAY_OF_MONTH, 1);
return equals(calendarCash, after);
}
private static void initializeCash(Calendar date) {
if (calendarCash == null) {
calendarCash = (Calendar) date.clone();
} else {
calendarCash.setTime(date.getTime());
}
}
}