package org.apache.pwd.util; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateFormatUtil { /** 12小時制 */ private static final String DATE_FORMAT_12_HOUR = "yyyy/MM/dd hh:mm:ss"; /** 24小時制 */ private static final String DATE_FORMAT_24_HOUR = "yyyy/MM/dd HH:mm:ss"; /** * 根據格式返回日期字符串 * * @param dateInfo * 日期 * @param stringFormat * 格式化字符串 * @return 日期字符串 */ public static String getStringDate(Date dateInfo, String stringFormat) { if(isNullOrEmpty(stringFormat)){ return null; } SimpleDateFormat sdf = new SimpleDateFormat(stringFormat); String formated = sdf.format(dateInfo); return formated; } /** * 根據格式返回日期 * * @param dateInfo * 日期字符串 * @param stringFormat * 格式化字符串 * @return 日期 * @throws Exception * 例外 */ public static Date getFormatDate(String dateInfo, String stringFormat) throws Exception { if (isNullOrEmpty(stringFormat)) { return null; } SimpleDateFormat sdf = new SimpleDateFormat(stringFormat); Date formated = sdf.parse(dateInfo); return formated; } /** * 根據年月日生成Calendar對象 * * @param year * 年 * @param month * 月 * @param day * 日 * @return Calendar對象 */ public static Calendar createCalendar(int year, int month, int day) { Calendar cal = Calendar.getInstance(); if (year < 100) { year = 2000 + year; } cal.set(year, month - 1, day); return cal; } /** * 根據日期生成Calendar對象 * * @param date * 日期 * @return Calendar對象 */ public static Calendar createCalendar(int date) { int year = date / 1000; int month = (date % 10000) / 100; int day = date % 100; Calendar cal = Calendar.getInstance(); cal.set(year, month - 1, day); return cal; } /** * 返回年份 * * @return 年份 * @throws Exception * 例外 */ public static Integer getNowYear() throws Exception { Calendar cal = Calendar.getInstance(); int year = cal.get(Calendar.YEAR); return year; } /** * 返回月份 * * @return 月份 * @throws Exception * 例外 */ public static Integer getNowMonth() throws Exception { Calendar cal = Calendar.getInstance(); int month = cal.get(Calendar.MONTH) + 1; return month; } /** * 返回當前日期 * * @return 日期 */ public static Integer getNowDay() { Calendar cal = Calendar.getInstance(); int day = cal.get(Calendar.DAY_OF_MONTH); return day; } /** * 返回某月份的第一天 * * @param year * 年 * @param month * 月 * @return 某月份的第一天 */ public static Integer getFirstDayOfMonth(int year, int month) { Calendar cal = createCalendar(year, month, 1); int day = cal.get(Calendar.DAY_OF_MONTH); return day; } /** * 返回某月份的最後一天 * * @param year * 年 * @param month * 月 * @return 某月份的最後一天 */ public static Integer getLastDayOfMonth(int year, int month) { Calendar cal = createCalendar(year, month, 1); int lastDay = cal.getActualMaximum(Calendar.DAY_OF_MONTH); return lastDay; } /** * 計算兩個日期之間相差的天數 * * @param startDate * 開始日期 * @param endDate * 結束日期 * @return 兩個日期之間相差的天數 */ public static Integer daysBetweenData(Integer startDate, Integer endDate) { if(startDate == null || endDate == null){ return null; } Calendar startCal = createCalendar(startDate); Calendar endCal = createCalendar(endDate); Calendar cal = null; if (startCal.before(endCal)) { cal = startCal; startCal = endCal; endCal = cal; } Long lg = (startCal.getTimeInMillis() - endCal.getTimeInMillis()) / 1000 / 60 / 60 / 24; return lg.intValue(); } /** * 判斷是否爲閏年 * * @param obj * 輸入年份 * @return 是否爲閏年 * @throws Exception * 例外 */ public static <T> boolean isLeapYear(T obj) throws Exception { SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); Calendar calendar = Calendar.getInstance(); int year = 0; if (obj instanceof String) { Date dateInfo = sdf.parse((String) obj); calendar.setTime(dateInfo); year = calendar.get(Calendar.YEAR); } else if (obj instanceof Date) { calendar.setTime((Date) obj); year = calendar.get(Calendar.YEAR); }else{ return false; } if ((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0 && year % 400 == 0)) { System.out.println("是閏年"); return true; } System.out.println("不是閏年"); return false; } /** * * * @param stringFormat * @return */ public static boolean isNullOrEmpty(String stringFormat) { return (stringFormat == null || stringFormat.length() == 0) ? true : false; } public static void main(String[] args) throws Exception { String dateInfo = "2014/12/12"; Calendar cal = Calendar.getInstance(); cal.setTime(new SimpleDateFormat("yyyy/MM/dd").parse(dateInfo)); // isLeapYear(cal.getTime()); System.out.println(getNowDay()); System.out.println(getFirstDayOfMonth(2014, 12)); System.out.println(getLastDayOfMonth(2014, 9)); // System.out.println(getStringDate(new Date(), "yyyy/MM/dd HH:mm:ss")); System.out.println(daysBetweenData(20140303, 20140304)); } }