package de.flower.rmt.util;
import de.flower.rmt.util.prettytime.PrettyTime;
import org.joda.time.DateTime;
import org.joda.time.LocalTime;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* Central class everybody has to use when formatting dates.
*
* @author flowerrrr
*/
public class Dates {
public static final String DATE_LONG = "dd.MM.yyyy";
public static final String DATE_MEDIUM = "dd.MM.yy";
public static final String DATE_SHORT = "dd.MM.";
public static final String DATE_SHORT_WITH_WEEKDAY = "EE. dd.MM.";
public static final String DATE_MEDIUM_WITH_WEEKDAY = "EE. dd.MM.yy";
public static final String DATE_LONG_WITH_WEEKDAY = "EE. dd.MM.yyyy";
public static final String TIME_SHORT = "HH:mm";
public static final String DATE_TIME_SHORT = DATE_SHORT + " " + TIME_SHORT;
public static final String DATE_TIME_MEDIUM_SHORT = DATE_MEDIUM + " " + TIME_SHORT;
public static String formatDateTimeMedium(final Date date) {
return DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM).format(date);
}
public static String formatDateMediumWithWeekday(final Date date) {
return new SimpleDateFormat(DATE_MEDIUM_WITH_WEEKDAY).format(date);
}
public static String formatDateTimeShort(final Date date) {
return DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT).format(date);
}
public static String formatDateTimeShort(final DateTime dateTime) {
return formatDateTimeShort(dateTime.toDate());
}
public static String formatDateTimeShortWithWeekday(final Date date) {
return formatDateShortWithWeekday(date) + " " + formatTimeShort(date);
}
public static String formatDateLongTimeShortWithWeekday(final Date date) {
return formatDateLongWithWeekday(date) + " " + formatTimeShort(date);
}
public static String formatDateLong(final Date date) {
return DateFormat.getDateInstance(DateFormat.LONG).format(date);
}
public static String formatDateShortWithWeekday(final Date date) {
return new SimpleDateFormat(DATE_SHORT_WITH_WEEKDAY).format(date);
}
public static String formatDateShort(final Date date) {
return new SimpleDateFormat(DATE_SHORT).format(date);
}
public static String formatDateMedium(final Date date) {
return DateFormat.getDateInstance(DateFormat.MEDIUM).format(date);
}
public static String formatDateLongWithWeekday(final Date date) {
return new SimpleDateFormat(DATE_LONG_WITH_WEEKDAY).format(date);
}
public static String formatTimeMedium(final Date date) {
return DateFormat.getTimeInstance(DateFormat.MEDIUM).format(date);
}
public static String formatTimeShort(final LocalTime time) {
return formatTimeShort(time.toDateTimeToday().toDate());
}
public static String formatTimeShort(final Date date) {
return DateFormat.getTimeInstance(DateFormat.SHORT).format(date);
}
/**
* Converts a date into something like
* '14 min ago' (< 12h),
* 'Today at 6:30 (> 12 h),
* 'Yesterday at 12:30' (>12h <day before yesterday),
* 'Friday at 2:43' (> day before yesterday) or
* 'April 10 at 6:54' (> one week).
*
* @param date
* @return
*/
public static String formatFacebook(final Date date) {
PrettyTime pt = new PrettyTime();
return pt.format(date);
}
}