package ilarkesto.base; import java.text.SimpleDateFormat; import java.util.Date; import java.util.GregorianCalendar; import java.util.TimeZone; /** * Utilitiy methods for dealing with date and time. Current month, year. Date comparsions. */ public final class Tm { private Tm() {} public static final long SECOND = 1000; public static final long MINUTE = SECOND * 60; public static final long HOUR = MINUTE * 60; public static final long DAY = HOUR * 24; public static final long WEEK = DAY * 7; public static final String[] MONTHS_DE = new String[] { "Januar", "Februar", "M\u00E4rz", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember" }; public static final String[] WEEKDAYS = new String[] { "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" }; public static final String[] WEEKDAYS_DE = new String[] { "Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag" }; public static final SimpleDateFormat DATE_DE = new SimpleDateFormat("dd.MM.yyyy"); public static final SimpleDateFormat DATE_WITH_SHORT_WEEKDAY_DE = new SimpleDateFormat("EE, dd.MM.yyyy"); public static final SimpleDateFormat DATE_LONG_DE = new SimpleDateFormat("dd. MMMM yyyy"); public static final SimpleDateFormat DATE_VERY_LONG_DE = new SimpleDateFormat("EEEE, dd. MMMM yyyy"); public static final SimpleDateFormat DATE_TIME_DE = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss"); public static final SimpleDateFormat DATE_ISO = new SimpleDateFormat("yyyy-MM-dd"); public static final SimpleDateFormat DATE_TIME_ISO = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static final SimpleDateFormat DATE_TIME_LOGFILE = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss"); public static final SimpleDateFormat TIME_SHORT_DE = new SimpleDateFormat("HH:mm"); public static final TimeZone TZ_BERLIN = TimeZone.getTimeZone("Europe/Berlin"); public static boolean isSameDay(Date day1, Date day2) { return getDayBegin(day1).equals(getDayBegin(day2)); } public static boolean isSameDayIgnoreYear(Date day1, Date day2) { GregorianCalendar cal = new GregorianCalendar(); cal.setTime(day1); cal.set(GregorianCalendar.YEAR, 0); day1 = cal.getTime(); cal.setTime(day2); cal.set(GregorianCalendar.YEAR, 0); day2 = cal.getTime(); return getDayBegin(day1).equals(getDayBegin(day2)); } public static Date getDayBegin(Date day) { GregorianCalendar cal = new GregorianCalendar(); cal.setTime(day); cal.set(GregorianCalendar.HOUR_OF_DAY, 0); cal.set(GregorianCalendar.MINUTE, 0); cal.set(GregorianCalendar.SECOND, 0); cal.set(GregorianCalendar.MILLISECOND, 0); return cal.getTime(); } public static Date getDayEnd(Date day) { GregorianCalendar cal = new GregorianCalendar(); cal.setTime(day); cal.set(GregorianCalendar.HOUR_OF_DAY, 23); cal.set(GregorianCalendar.MINUTE, 59); cal.set(GregorianCalendar.SECOND, 59); cal.set(GregorianCalendar.MILLISECOND, 999); return cal.getTime(); } public static String formatDateTimeShortDe(Date time) { StringBuffer sb = new StringBuffer(); sb.append(DATE_DE.format(time)); if (getMillisInDay(time) > 0) { sb.append(TIME_SHORT_DE.format(time)); } return sb.toString(); } public static long getMillisInDay(Date time) { return time.getTime() - getDayBegin(time).getTime(); } public static int getCurrentYear() { GregorianCalendar gc = new GregorianCalendar(); return gc.get(GregorianCalendar.YEAR); } public static int getCurrentMonth() { GregorianCalendar gc = new GregorianCalendar(); return gc.get(GregorianCalendar.MONTH) + 1; } public static int year(int year) { if (year < (getCurrentYear() + 23 - 2000)) return year + 2000; if (year < 1000) return year + 1900; return year; } public static int countYearsSince(Date date) { GregorianCalendar cal = new GregorianCalendar(); cal.setTime(date); return getCurrentYear() - cal.get(GregorianCalendar.YEAR); } }