package com.pedrocarrillo.expensetracker.utils;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
/**
* Created by Pedro on 9/21/2015.
*/
public class DateUtils {
public static Calendar setDateStartOfDay(Calendar calendar){
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.clear(Calendar.MINUTE);
calendar.clear(Calendar.SECOND);
calendar.clear(Calendar.MILLISECOND);
return calendar;
}
public static Date getFirstDateOfCurrentMonth() {
Calendar cal = setDateStartOfDay(Calendar.getInstance());
cal.set(Calendar.DAY_OF_MONTH, Calendar.getInstance().getActualMinimum(Calendar.DAY_OF_MONTH));
return cal.getTime();
}
public static Date getLastDateOfCurrentMonth() {
Calendar cal = setDateStartOfDay(Calendar.getInstance());
cal.set(Calendar.DAY_OF_MONTH, Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_MONTH));
cal.add(Calendar.DATE, 1);
return cal.getTime();
}
public static Date getRealLastDateOfCurrentMonth() {
Calendar cal = setDateStartOfDay(Calendar.getInstance());
cal.set(Calendar.DAY_OF_MONTH, Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_MONTH));
return cal.getTime();
}
public static Date getFirstDateOfCurrentWeek() {
return getCalendarFirstDayOfCurrentWeek().getTime();
}
public static Calendar getCalendarFirstDayOfCurrentWeek() {
Calendar cal = setDateStartOfDay(Calendar.getInstance());
cal.set(Calendar.DAY_OF_WEEK, cal.getFirstDayOfWeek());
return setDateStartOfDay(cal);
}
public static Date getLastDateOfCurrentWeek(){
Calendar cal = setDateStartOfDay(Calendar.getInstance());
// Calendar.getInstance().getActualMaximum(Calendar.DAY_OF_WEEK);
cal.set(Calendar.DAY_OF_WEEK, 7);
cal.add(Calendar.DATE, 2);
return cal.getTime();
}
public static Date getRealLastDateOfCurrentWeek() {
Calendar cal = setDateStartOfDay(Calendar.getInstance());
cal.set(Calendar.DAY_OF_WEEK, 7);
cal.add(Calendar.DATE, 1);
return cal.getTime();
}
public static Date getTomorrowDate() {
Calendar cal = setDateStartOfDay(Calendar.getInstance());
cal.add(Calendar.DATE, 1);
return cal.getTime();
}
public static Date addDaysToDate(Date currentDate, int numDays) {
Calendar c = Calendar.getInstance();
c.setTime(currentDate);
c.add(Calendar.DATE, numDays);
return c.getTime();
}
public static List<Date> getWeekDates() {
Calendar cal = getCalendarFirstDayOfCurrentWeek();
List<Date> dateList = new ArrayList<>();
for (int i=0; i<7; i++) {
dateList.add(cal.getTime());
cal.add(Calendar.DAY_OF_WEEK, 1);
}
return dateList;
}
public static boolean isToday(Date date) {
return android.text.format.DateUtils.isToday(date.getTime());
}
public static Date getToday() {
return setDateStartOfDay(Calendar.getInstance()).getTime();
}
}