Web開發中常用的時間處理Java工具類
import static java.util.Calendar.HOUR_OF_DAY; import static java.util.Calendar.MILLISECOND; import static java.util.Calendar.MINUTE; import static java.util.Calendar.SECOND;import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Arrays; import java.util.Calendar; import java.util.Date; import java.util.List;
/**
- Copyright (c) 2011 sxgkwei
- Author:sxgkwei
- Email:sxgkwei@gmail.com
- Date: 2012-03-30 13:01:21
JDK: 1.6.2 */ public class DateUtil extends org.apache.commons.lang.time.DateUtils {
/**
- 默認的日期格式化樣式 */ public static final String DAY_PATTERN = "yyyy-MM-dd"; /**
默認的時間格式化樣式 */ public static final String TIME_PATTERN = "HH:mm:ss";
/**
- 將Date格式化成符合默認格式的字符串
- @param date
@return 返回樣例:2012-03-29 14:32:23 */ public static String format(Date date) { SimpleDateFormat formatTool = new SimpleDateFormat(); formatTool.applyPattern(DAY_PATTERN + " " + TIME_PATTERN); return formatTool.format(date); }
/**
- 將Date格式化成符合默認日期格式的字符串
- @param date
@return 返回樣例:2012-03-29 */ public static String formatDate(Date date) { SimpleDateFormat formatTool = new SimpleDateFormat(); formatTool.applyPattern(DAY_PATTERN); return formatTool.format(date); }
/**
- 將Date格式化成符合默認時間格式的字符串
- @param date
@return 返回樣例:14:32:23 */ public static String formatTime(Date date) { SimpleDateFormat formatTool = new SimpleDateFormat(); formatTool.applyPattern(TIME_PATTERN); return formatTool.format(date); }
/**
- 按照pattern格式格式化Date
- @param date
- @param pattern
- 樣例: yyyy/MM/dd
@return 返回樣例:2012/03/29 */ public static String format(Date date, String pattern) { SimpleDateFormat formatTool = new SimpleDateFormat(); formatTool.applyPattern(pattern); return formatTool.format(date); }
/**
- 將符合默認格式的字符串轉換成Date
- @param dateValue
- 樣例:2012-03-29 14:32:23
- @return
@throws ParseException */ public static Date parse(String dateValue) throws ParseException { SimpleDateFormat formatTool = new SimpleDateFormat(); formatTool.applyPattern(DAY_PATTERN + " " + TIME_PATTERN); return formatTool.parse(dateValue); }
/**
- 將符合默認格式的日期字符串轉換成Date
- @param dateValue
- 樣例:2012-03-29
- @return
@throws ParseException */ public static Date parseDate(String dateValue) throws ParseException { SimpleDateFormat formatTool = new SimpleDateFormat(); formatTool.applyPattern(DAY_PATTERN); return formatTool.parse(dateValue); }
/**
- 將符合pattern格式的dateValue轉換成Date
- @param dateValue
- 樣例:2012/03/29
- @param pattern
- 樣例:yyyy/MM/dd
- @return
@throws ParseException */ public static Date parse(String dateValue, String pattern)
throws ParseException {
SimpleDateFormat formatTool = new SimpleDateFormat(); formatTool.applyPattern(pattern); return formatTool.parse(dateValue); }
/**
- 返回這一天的最早的時候
- @param date
@return */ public static Date getEarliest(Date date) { return parseTime(date, 0, 0, 0, 0); }
/**
- 返回這一天的最晚時候
- @param date
@return */ public static Date getLastest(Date date) { return parseTime(date, 23, 59, 59, 999); }
/**
- 得到指定月的天數
- @param year
- @param month
@return */ public static int getMonthLastDay(int year, int month) { Calendar a = Calendar.getInstance(); a.set(Calendar.YEAR, year); a.set(Calendar.MONTH, month - 1); a.set(Calendar.DATE, 1);// 把日期設置為當月第一天 a.roll(Calendar.DATE, -1);// 日期回滾一天,也就是最后一天 int maxDate = a.get(Calendar.DATE); return maxDate; }
/**
- 返回指定時間加上num天后的時間
- @param date
- @param num
@return */ public static Date add(Date date, int num) { Calendar a = Calendar.getInstance(); a.setTime(date); a.add(Calendar.DAY_OF_MONTH, num); return a.getTime(); }
/**
- 返回false:date=null,date是1970年;其它都返回true
- @param date
@return */ public static boolean isNotEmpty(Date date) { if (date != null) {
Calendar a = Calendar.getInstance(); a.setTime(date); return a.get(Calendar.YEAR) != 1970;
} return Boolean.FALSE; }
/**
- 獲得date的小時數0-23
- @param date
@return */ public static int getHours(Date date) { Calendar a = Calendar.getInstance(); a.setTime(date); return a.get(Calendar.HOUR_OF_DAY); }
/**
- 獲得date是一周的第幾天,注意:周日 返回 1,周六 返回 7
- @param date
@return */ public static int getDay(Date date) { Calendar a = Calendar.getInstance(); a.setTime(date); return a.get(Calendar.DAY_OF_WEEK); }
/**
- 設定date的時間細節
- @param date
- 要設定時間細節的date
- @param hourOfDay
- 0-23
- @param minute
- 0-59
- @param second
- 0-59
- @param milliSecond
- 0-999
@return */ public static Date parseTime(Date date, int hourOfDay, int minute,
int second, int milliSecond) {
Calendar cal = Calendar.getInstance(); cal.setTime(date); setCalendarTime(cal, hourOfDay, minute, second, milliSecond); return cal.getTime(); }
/**
- 設定date的時間細節
- @param date
- 要設定時間細節的date
- @param timeDetail
- 以:號分隔的24小時制的時間,例:16:23:42:267 或 16(等同于16:00:00:000)
@return */ public static Date parseTime(Date date, String timeDetail) {
List<String> strList = new ArrayList<String>(); strList.addAll(Arrays.asList(timeDetail.split(":")));
while (strList.size() < 4) {
strList.add("0");
} return parseTime(date, Integer.parseInt(strList.get(0)),
Integer.parseInt(strList.get(1)), Integer.parseInt(strList.get(2)), Integer.parseInt(strList.get(3)));
}
/**
- 指定時間 是否在 當前時間 之后,注:和日期無關
- @param time
- 指定的時間, 傳入樣例:16:23:42:267 或 16(等同于16:00:00:000)
@return */ public static boolean isAfterTime(String time) { Date date = parseTime(new Date(), time); return date.after(new Date()); }
/**
- 指定時間 是否在 當前時間 之前,注:和日期無關
- @param time
- 指定的時間, 傳入樣例:16:23:42:267 或 16(等同于16:00:00:000)
@return */ public static boolean isBeforeTime(String time) { Date date = parseTime(new Date(), time); return date.before(new Date()); }
private static void setCalendarTime(Calendar cal, int hourOfDay,
int minute, int second, int milliSecond) {
cal.set(HOUR_OF_DAY, hourOfDay); cal.set(MINUTE, minute); cal.set(SECOND, second); cal.set(MILLISECOND, milliSecond); } } </pre>