/woloc/src/main/java/org/richardsson/woloc/time/TimeUtil.java
https://bitbucket.org/krichardsson/woloc · Java · 92 lines · 67 code · 25 blank · 0 comment · 1 complexity · f5f6889afeb33dd8e9b97dd5194412d6 MD5 · raw file
- package org.richardsson.woloc.time;
- import java.util.Calendar;
- import java.util.Date;
- import java.util.GregorianCalendar;
- public class TimeUtil {
- private TimeUtil() {}
- public static GregorianCalendar startOfDay(GregorianCalendar reference) {
- final int year = reference.get(Calendar.YEAR);
- final int month = reference.get(Calendar.MONTH);
- final int day = reference.get(Calendar.DAY_OF_MONTH);
- return createCalendar(year, month, day);
- }
- public static GregorianCalendar endOfDay(GregorianCalendar reference) {
- final GregorianCalendar calendar = startOfDay(reference);
- calendar.add(Calendar.DAY_OF_YEAR, 1);
- return calendar;
- }
- public static GregorianCalendar startOfWeek(GregorianCalendar reference) {
- final GregorianCalendar calendarWithMondayAsFirstDayOfWeek = startOfDay(reference);
- int daysToShiftToMonday = calculateDaysToShiftToMonday(calendarWithMondayAsFirstDayOfWeek);
- calendarWithMondayAsFirstDayOfWeek.add(Calendar.DAY_OF_YEAR, daysToShiftToMonday);
- return calendarWithMondayAsFirstDayOfWeek;
- }
- public static GregorianCalendar endOfWeek(GregorianCalendar reference) {
- final GregorianCalendar calendar = startOfWeek(reference);
- calendar.add(Calendar.DAY_OF_YEAR, 7);
- return calendar;
- }
- public static GregorianCalendar startOfMonth(GregorianCalendar reference) {
- final int year = reference.get(Calendar.YEAR);
- final int month = reference.get(Calendar.MONTH);
- return createCalendar(year, month, 1);
- }
- public static GregorianCalendar endOfMonth(GregorianCalendar reference) {
- final GregorianCalendar calendar = startOfMonth(reference);
- calendar.add(Calendar.MONTH, 1);
- return calendar;
- }
- public static int daysInMonth(long reference) {
- final GregorianCalendar timeInMonthAsCalendar = createCalendar(reference);
- return timeInMonthAsCalendar.getActualMaximum(Calendar.DAY_OF_MONTH);
- }
- public static GregorianCalendar createCalendar(long time) {
- final GregorianCalendar calendar = createCalendar();
- calendar.setTime(new Date(time));
- return calendar;
- }
- public static GregorianCalendar createCalendar(int year, int month, int day) {
- final GregorianCalendar calendar = createCalendar();
- calendar.set(year, month, day);
- return calendar;
- }
- private static GregorianCalendar createCalendar() {
- final GregorianCalendar calendar = new GregorianCalendar();
- calendar.clear();
- calendar.setFirstDayOfWeek(Calendar.MONDAY);
- return calendar;
- }
- private static int calculateDaysToShiftToMonday(GregorianCalendar reference) {
- final int dayOfWeek = reference.get(Calendar.DAY_OF_WEEK);
- int daysToShiftToMonday = Calendar.MONDAY - dayOfWeek;
- if (dayOfWeek < reference.getFirstDayOfWeek()) {
- daysToShiftToMonday = daysToShiftToMonday - 7;
- }
- return daysToShiftToMonday;
- }
- }