Java 日期工具類
public class CalendarUtil
{
private static Calendar calendar = null;
/**
* 根據類型抓取時間段
* @param type <dt> <dl>1:最近一個小時</dl> <dl>2:最近一天</dl> <dl>3:最近一周</dl>
* <dl>4:最近一月</dl> <dl>5:最近一季度</dl> <dl>6:最近半年</dl> <dl>7:最近一年</dl>
* <dl>8:昨天</dl><dl>9:上周</dl> <dl>10:上月</dl> <dl>11:上季度</dl> <dl>12:上半年</dl>
* <dl>13:去年</dl> <dt>
* @return
*/
public static Date[] getTime(int type)
{
switch (type)
{
case 1:
return calcThePastHour();
case 2:
return calcRecentDay();
case 3:
return calcTheLatestWeek();
case 4:
return calcRecentMonth();
case 5:
return calcMostRecentQuarter();
case 6:
return calcRecentHalfYear();
case 7:
return null;
case 8:
return calcYesterday();
case 9:
return calcLastWeek();
case 10:
return calcLastMonth();
case 11:
return calcLastSeason();
case 12:
return calcFirstHalfYear();
case 13:
return calcPastYear();
default:
throw new IllegalArgumentException("type 只能在[1,13]之間");
}
}
/**
* 昨天時間段
*/
public static Date[] calcYesterday()
{
calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -1);
Date from = getMinDate(calendar);
Date to = getMaxDate(calendar);
return new Date[]{from, to};
}
/**
* 國內習慣 上一周時間段
*/
public static Date[] calcLastWeek()
{
calendar = Calendar.getInstance();
int minus = calendar.get(Calendar.DAY_OF_WEEK);
calendar.add(Calendar.DATE, -minus + 1);
Date to = getMaxDate(calendar);
calendar.add(Calendar.DATE, -6);
Date from = getMinDate(calendar);
return new Date[]{from, to};
}
/**
* 國外習慣 上一周時間段
*/
public static Date[] calcLastWeekF()
{
calendar = Calendar.getInstance();
int minus = calendar.get(Calendar.DAY_OF_WEEK);
calendar.add(Calendar.DATE, -minus);
Date to = getMaxDate(calendar);
calendar.add(Calendar.DATE, -6);
Date from = getMinDate(calendar);
return new Date[]{from, to};
}
/**
* 上個月時間段
*/
public static Date[] calcLastMonth()
{
calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_MONTH, 0);
Date to = getMaxDate(calendar);
calendar.set(Calendar.DAY_OF_MONTH, 1);
Date from = getMinDate(calendar);
return new Date[]{from, to};
}
/**
* 上半年時間段
*/
public static Date[] calcFirstHalfYear()
{
calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
calendar.set(year, 0, 1);
Date from = getMinDate(calendar);
calendar.set(year, 5, 30);
Date to = getMaxDate(calendar);
return new Date[]{from, to};
}
/**
* 下半年時間段
*/
public static Date[] calcNextHalfYear()
{
calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
calendar.set(year, 6, 1);
Date from = getMinDate(calendar);
calendar.set(year, 11, 31);
Date to = getMaxDate(calendar);
return new Date[]{from, to};
}
/**
* 去年時間段
*/
public static Date[] calcPastYear()
{
calendar = Calendar.getInstance();
int pastYear = calendar.get(Calendar.YEAR) - 1;
calendar.set(pastYear, 0, 1);
Date from = getMinDate(calendar);
calendar.set(pastYear, 11, 31);
Date to = getMaxDate(calendar);
return new Date[]{from, to};
}
/**
* 上一季度時間段
*/
public static Date[] calcLastSeason()
{
calendar = Calendar.getInstance();
Date[] time = new Date[2];
Calendar c = Calendar.getInstance();
int lastSeason = getSeason(calendar) - 1;
if (lastSeason == 1)
{//第一季度
c.set(Calendar.MONTH, Calendar.JANUARY);
time[0] = getMinMonthDate(c);
c.set(Calendar.MONTH, Calendar.MARCH);
time[1] = getMaxMonthDate(c);
}
else if (lastSeason == 2)
{//第二季度
c.set(Calendar.MONTH, Calendar.APRIL);
time[0] = getMinMonthDate(c);
c.set(Calendar.MONTH, Calendar.JUNE);
time[1] = getMaxMonthDate(c);
}
else if (lastSeason == 3)
{//第三季度
c.set(Calendar.MONTH, Calendar.JULY);
time[0] = getMinMonthDate(c);
c.set(Calendar.MONTH, Calendar.SEPTEMBER);
time[1] = getMaxMonthDate(c);
}
else if (lastSeason == 0)
{//去年的第四季度
c.set(Calendar.MONTH, Calendar.OCTOBER);
time[0] = getMinMonthDate(c);
c.set(Calendar.MONTH, Calendar.DECEMBER);
time[1] = getMaxMonthDate(c);
}
return time;
}
/**
* 最近一小時時間段
*/
public static Date[] calcThePastHour()
{
calendar = Calendar.getInstance();
Date to = calendar.getTime();
calendar.set(Calendar.HOUR_OF_DAY, calendar.get(Calendar.HOUR_OF_DAY) - 1);
Date from = calendar.getTime();
return new Date[]{from, to};
}
/**
* 最近一天時間段
*/
public static Date[] calcRecentDay()
{
calendar = Calendar.getInstance();
Date to = calendar.getTime();
calendar.set(Calendar.DATE, calendar.get(Calendar.DATE) - 1);
Date from = calendar.getTime();
return new Date[]{from, to};
}
/**
* 最近一周時間段
*/
public static Date[] calcTheLatestWeek()
{
calendar = Calendar.getInstance();
Date to = calendar.getTime();
calendar.set(Calendar.WEEK_OF_MONTH, calendar.get(Calendar.WEEK_OF_MONTH) - 1);
Date from = calendar.getTime();
return new Date[]{from, to};
}
/**
* 最近一個月
*/
public static Date[] calcRecentMonth()
{
calendar = Calendar.getInstance();
Date to = calendar.getTime();
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 1);
Date from = calendar.getTime();
return new Date[]{from, to};
}
/**
* 最近一個季度
*/
public static Date[] calcMostRecentQuarter()
{
calendar = Calendar.getInstance();
Date to = calendar.getTime();
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 3);
Date from = calendar.getTime();
return new Date[]{from, to};
}
/**
* 最近半年
*/
public static Date[] calcRecentHalfYear()
{
calendar = Calendar.getInstance();
Date to = calendar.getTime();
calendar.set(Calendar.MONTH, calendar.get(Calendar.MONTH) - 6);
Date from = calendar.getTime();
return new Date[]{from, to};
}
/**
* 最近一年
*/
public static Date[] calcRecentYear()
{
calendar = Calendar.getInstance();
Date to = calendar.getTime();
calendar.set(Calendar.YEAR, calendar.get(Calendar.YEAR) - 1);
Date from = calendar.getTime();
return new Date[]{from, to};
}
/**
* 抓取季度序列號
* @param calendar
* @return
*/
public static int getSeason(Calendar calendar)
{
int season = 0;
int month = calendar.get(Calendar.MONTH);
switch (month)
{
case Calendar.JANUARY:
case Calendar.FEBRUARY:
case Calendar.MARCH:
season = 1;
break;
case Calendar.APRIL:
case Calendar.MAY:
case Calendar.JUNE:
season = 2;
break;
case Calendar.JULY:
case Calendar.AUGUST:
case Calendar.SEPTEMBER:
season = 3;
break;
case Calendar.OCTOBER:
case Calendar.NOVEMBER:
case Calendar.DECEMBER:
season = 4;
break;
default:
break;
}
return season;
}
/**
* 獲取當天最小時間
*/
public static Date getMinDate(Calendar calendar)
{
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 獲取當天最大時間
*/
public static Date getMaxDate(Calendar calendar)
{
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 0);
return calendar.getTime();
}
/**
* 獲取一個月中第一天
*/
public static Date getMinMonthDate(Calendar c)
{
c.set(Calendar.DAY_OF_MONTH, 1);
return getMinDate(c);
}
/**
* 獲取一個月的最后一天
*/
public static Date getMaxMonthDate(Calendar c)
{
c.add(Calendar.MONTH, 1);
c.set(Calendar.DAY_OF_MONTH, 0);
return getMaxDate(c);
}
}</pre>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!