/** * Copyright (c) 2012 Vinayak Solutions Private Limited * See the file license.txt for copying permission. */ package com.vinsol.expensetracker.helpers; import java.util.Calendar; import com.vinsol.expensetracker.R; public class DisplayDate { // /////// ******* Class to pass Calender and get date in display format ******* //////// private Calendar mCalendar; public DisplayDate() {} public DisplayDate(Calendar calendar) { mCalendar = calendar; mCalendar.setFirstDayOfWeek(Calendar.MONDAY); } public DisplayDate(Long timeInMillis) { mCalendar = Calendar.getInstance(); mCalendar.setTimeInMillis(timeInMillis); mCalendar.setFirstDayOfWeek(Calendar.MONDAY); } public Calendar getCalendar() { return mCalendar; } // ////// ******** Function to get date in proper format to display in various activities ****** /////// public String getDisplayDate() { String month; int day, year; mCalendar.set(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH),0,0,0); mCalendar.setFirstDayOfWeek(Calendar.MONDAY); month = getMonth(mCalendar.get(Calendar.MONTH)); day = mCalendar.get(Calendar.DAY_OF_MONTH); year = mCalendar.get(Calendar.YEAR); Calendar currentDate = Calendar.getInstance(); currentDate.setFirstDayOfWeek(Calendar.MONDAY); if (day == currentDate.get(Calendar.DAY_OF_MONTH)&& mCalendar.get(Calendar.MONTH) == currentDate.get(Calendar.MONTH)&& year == currentDate.get(Calendar.YEAR)) { return "Today, " + month + " " + day; } return month + " " + day + ", " + year; } //////// ******** Function to get date in proper format to display in various activities ****** /////// public String getDisplayDateReport(long timeInMillis) { Calendar mCalendar = Calendar.getInstance(); mCalendar.setTimeInMillis(timeInMillis); return date(mCalendar); } ////////******** Function to get date in proper format to display in various activities ****** /////// public String getDisplayDateReport(Calendar calendar) { return date(calendar); } public String getReportDateRange(int mStartDay, int mStartMonth,int mStartYear, int mEndDay, int mEndMonth, int mEndYear) { return getMonth(mStartMonth) + " " + mStartDay + ", " + mStartYear+" - "+getMonth(mEndMonth) + " " + mEndDay + ", " + mEndYear; } private String date(Calendar mCalendar) { String month, day, year; mCalendar.set(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH),0,0,0); mCalendar.setFirstDayOfWeek(Calendar.MONDAY); month = getMonth(mCalendar.get(Calendar.MONTH)); day = mCalendar.get(Calendar.DAY_OF_MONTH) + ""; year = mCalendar.get(Calendar.YEAR) + ""; Calendar currentDate = Calendar.getInstance(); currentDate.setFirstDayOfWeek(Calendar.MONDAY); return month + " " + day + ", " + year; } // //////******** Function to get date in proper format to display in various activities ****** /////// public String getHeaderFooterListDisplayDate(int type) { String month, day, year; mCalendar.set(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH),0,0,0); mCalendar.setFirstDayOfWeek(Calendar.MONDAY); month = getMonth(mCalendar.get(Calendar.MONTH)); day = mCalendar.get(Calendar.DAY_OF_MONTH) + ""; year = mCalendar.get(Calendar.YEAR) + ""; Calendar currentDate = Calendar.getInstance(); currentDate.set(currentDate.get(Calendar.YEAR), currentDate.get(Calendar.MONTH), currentDate.get(Calendar.DAY_OF_MONTH),0,0,0); currentDate.setFirstDayOfWeek(Calendar.MONDAY); switch (type) { case R.string.sublist_thisweek: if (Integer.parseInt(day) == currentDate.get(Calendar.DAY_OF_MONTH) && mCalendar.get(Calendar.MONTH) == currentDate.get(Calendar.MONTH) && Integer.parseInt(year) == currentDate.get(Calendar.YEAR)) { return "Today, " + month + " " + day; } else { return month + " " + day + ", " + year; } case R.string.sublist_thismonth: return month + " " + mCalendar.get(Calendar.YEAR); case R.string.sublist_thisyear: case R.string.sublist_all: return mCalendar.get(Calendar.YEAR) + ""; default: return "Week "+mCalendar.get(Calendar.WEEK_OF_MONTH)+", "+month+" "+year; } } public String getDisplayDateGraph() { String month, year; mCalendar.set(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH),0,0,0); mCalendar.setFirstDayOfWeek(Calendar.MONDAY); month = getMonth(mCalendar.get(Calendar.MONTH)); year = mCalendar.get(Calendar.YEAR) + ""; if(isCurrentMonth()) { return getDisplayDate(); } if (isNotCurrentMonthAndCurrentYear() || isPrevYears()) { return "Week "+mCalendar.get(Calendar.WEEK_OF_MONTH)+", "+month+" "+year; } return null; } public String getDisplayDateHeaderGraph() { String month, year; mCalendar.set(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH),0,0,0); mCalendar.setFirstDayOfWeek(Calendar.MONDAY); month = getMonth(mCalendar.get(Calendar.MONTH)); year = mCalendar.get(Calendar.YEAR) + ""; if(isCurrentMonth()) { return "Week "+mCalendar.get(Calendar.WEEK_OF_MONTH)+", "+month+" "+year; } if (isNotCurrentMonthAndCurrentYear() || isPrevYears()) { return month + " " + year; } return year; } public boolean isPrevYears() { Calendar mTempCalendar = Calendar.getInstance(); mTempCalendar.set(mTempCalendar.get(Calendar.YEAR), mTempCalendar.get(Calendar.MONTH), mTempCalendar.get(Calendar.DAY_OF_MONTH),0,0,0); mTempCalendar.setFirstDayOfWeek(Calendar.MONDAY); mCalendar.set(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH),0,0,0); mCalendar.setFirstDayOfWeek(Calendar.MONDAY); if (mTempCalendar.get(Calendar.YEAR) > mCalendar.get(Calendar.YEAR)) { return true; } return false; } public boolean isNotCurrentMonthAndCurrentYear() { Calendar mTempCalender = Calendar.getInstance(); mTempCalender.set(mTempCalender.get(Calendar.YEAR), mTempCalender.get(Calendar.MONTH), mTempCalender.get(Calendar.DAY_OF_MONTH),0,0,0); mTempCalender.setFirstDayOfWeek(Calendar.MONDAY); mCalendar.set(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH),0,0,0); mCalendar.setFirstDayOfWeek(Calendar.MONDAY); if ((mTempCalender.get(Calendar.MONTH) > mCalendar.get(Calendar.MONTH)) && (mTempCalender.get(Calendar.YEAR) == mCalendar.get(Calendar.YEAR))) { return true; } return false; } public boolean isCurrentYear() { Calendar mTempCalender = Calendar.getInstance(); mTempCalender.set(mTempCalender.get(Calendar.YEAR), mTempCalender.get(Calendar.MONTH), mTempCalender.get(Calendar.DAY_OF_MONTH),0,0,0); mTempCalender.setFirstDayOfWeek(Calendar.MONDAY); mCalendar.set(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH),0,0,0); mCalendar.setFirstDayOfWeek(Calendar.MONDAY); if (mTempCalender.get(Calendar.YEAR) == mCalendar.get(Calendar.YEAR)) { return true; } return false; } public boolean isCurrentMonth() { Calendar mTempCalendar = Calendar.getInstance(); mTempCalendar.set(mTempCalendar.get(Calendar.YEAR), mTempCalendar.get(Calendar.MONTH), mTempCalendar.get(Calendar.DAY_OF_MONTH),0,0,0); mTempCalendar.setFirstDayOfWeek(Calendar.MONDAY); mCalendar.set(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH),0,0,0); mCalendar.setFirstDayOfWeek(Calendar.MONDAY); if ((mTempCalendar.get(Calendar.MONTH) == mCalendar.get(Calendar.MONTH)) && (mTempCalendar.get(Calendar.YEAR) == mCalendar.get(Calendar.YEAR))) { return true; } return false; } public boolean isCurrentWeek() { Calendar mTempCalendar = Calendar.getInstance(); mTempCalendar.set(mTempCalendar.get(Calendar.YEAR), mTempCalendar.get(Calendar.MONTH), mTempCalendar.get(Calendar.DAY_OF_MONTH),0,0,0); mTempCalendar.setFirstDayOfWeek(Calendar.MONDAY); mCalendar.set(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH),0,0,0); mCalendar.setFirstDayOfWeek(Calendar.MONDAY); if ((mTempCalendar.get(Calendar.WEEK_OF_MONTH) == mCalendar.get(Calendar.WEEK_OF_MONTH)) && (mTempCalendar.get(Calendar.MONTH) == mCalendar.get(Calendar.MONTH)) && (mTempCalendar.get(Calendar.YEAR) == mCalendar.get(Calendar.YEAR))) { return true; } return false; } //////// ******* Function which returns month as string ********/////////// private static String getMonth(int i) { switch (i) { case 0: return "Jan"; case 1: return "Feb"; case 2: return "Mar"; case 3: return "Apr"; case 4: return "May"; case 5: return "Jun"; case 6: return "Jul"; case 7: return "Aug"; case 8: return "Sep"; case 9: return "Oct"; case 10: return "Nov"; case 11: return "Dec"; } return null; } public String getSubListTag(int type) { mCalendar.set(mCalendar.get(Calendar.YEAR), mCalendar.get(Calendar.MONTH), mCalendar.get(Calendar.DAY_OF_MONTH),0,0,0); mCalendar.setFirstDayOfWeek(Calendar.MONDAY); switch (type) { case R.string.sublist_thismonth: return "Week " + mCalendar.get(Calendar.WEEK_OF_MONTH); case R.string.sublist_thisyear: return getMonth(mCalendar.get(Calendar.MONTH)) + " " + mCalendar.get(Calendar.YEAR) + ""; case R.string.sublist_all: return mCalendar.get(Calendar.YEAR) + ""; default: return null; } } public String getLocationDate(Long timeInMillis, String locationData) { Calendar tempCalendar = Calendar.getInstance(); tempCalendar.setTimeInMillis(timeInMillis); tempCalendar.setFirstDayOfWeek(Calendar.MONDAY); int hour = tempCalendar.get(Calendar.HOUR); String minute = Integer.toString(tempCalendar.get(Calendar.MINUTE)); if (minute.length() == 1) { minute = "0" + minute; } if (hour == 0) { hour = 12; } if(locationData == null || locationData.equals("")) { locationData = "Unknown location"; } if (tempCalendar.get(Calendar.MINUTE) != 0) { if (tempCalendar.get(Calendar.AM_PM) == 1) { return hour + ":" + minute + " " + "PM" + " at " + locationData; } if (tempCalendar.get(Calendar.AM_PM) == 0) { return hour + ":" + minute + " " + "AM" + " at " + locationData; } } else { if (tempCalendar.get(Calendar.AM_PM) == 1) { return hour + "" + " " + "PM" + " at " + locationData; } if (tempCalendar.get(Calendar.AM_PM) == 0) { return hour + ":" + " " + "AM" + " at " + locationData; } } return null; } }