package cl.monsoon.s1next.util; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; public final class DateUtil { private DateUtil() {} /** * Used to construct {@link com.bumptech.glide.signature.StringSignature}s * to invalidate avatar every day. */ public static String today() { return getSimpleDateFormatInstance().format(new Date()); } /** * Used to construct {@link com.bumptech.glide.signature.StringSignature}s * to invalidate avatar every week. */ public static String dayOfWeek() { Calendar calendar = Calendar.getInstance(); calendar.setFirstDayOfWeek(Calendar.MONDAY); calendar.set(Calendar.DAY_OF_WEEK, calendar.getFirstDayOfWeek()); return getSimpleDateFormatInstance().format(calendar.getTime()); } /** * Used to construct {@link com.bumptech.glide.signature.StringSignature}s * to invalidate avatar every month. */ public static String dayOfMonth() { Calendar calendar = Calendar.getInstance(); calendar.set(Calendar.DAY_OF_MONTH, 1); return getSimpleDateFormatInstance().format(calendar.getTime()); } private static final class SimpleDateFormatHolder { private static final String TEMPLATE = "yyyy-MM-dd"; private static final SimpleDateFormat INSTANCE = new SimpleDateFormat(TEMPLATE, Locale.getDefault()); } /** * Initialization on Demand Holder. * <p> * See https://en.wikipedia.org/wiki/Initialization-on-demand_holder_idiom */ private static synchronized SimpleDateFormat getSimpleDateFormatInstance() { return SimpleDateFormatHolder.INSTANCE; } }