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));
}
}
转载于:https://my.oschina.net/u/1858909/blog/484960