import java.util.Calendar;
/**
* <pre>
* 日期时间的处理
* </pre>
* @author lidq
*
*/
public class DateUtil
{
/**
* 检查日期格式
* @param year
* @param month
* @param day
* @return boolean
*/
public final static boolean chkDateFormat(int year,int month,int day) {
try {
/*
// 如果输入日期不是8位的,判定为false.
if (null == date || "".equals(date) || !date.matches("[0-9]{8}")) {
return false;
}
*/
if((year<2000)||(year>3000))
{
return false;
}
if((month<0)||(month>12))
{
return false;
}
if((day<0)||(day>31))
{
return false;
}
//当 年、月、日都有效时。
if((year != 0)&&( month != 0 )&&( day != 0 ))
{
Calendar calendar = Calendar.getInstance();
// 当 Calendar 处于 non-lenient 模式时,如果其日历字段中存在任何不一致性,它都会抛出一个异常。
calendar.setLenient(false);
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month-1);
calendar.set(Calendar.DATE, day);
// 如果日期错误,执行该语句,必定抛出异常.
calendar.get(Calendar.YEAR);
}
} catch (IllegalArgumentException e) {
return false;
}
return true;
}
/**
* 检查日期是否有效
* @param year
* @param month
* @param day
* @return boolean
*/
public final static boolean chkDateValid(int year,int month,int day) {
try {
/*
// 如果输入日期不是8位的,判定为false.
if (null == date || "".equals(date) || !date.matches("[0-9]{8}")) {
return false;
}
*/
if((year<2000)||(year>3000))
{
return false;
}
if((month<=0)||(month>12))
{
return false;
}
if((day<=0)||(day>31))
{
return false;
}
//当 年、月、日都有效时。
Calendar calendar = Calendar.getInstance();
// 当 Calendar 处于 non-lenient 模式时,如果其日历字段中存在任何不一致性,它都会抛出一个异常。
calendar.setLenient(false);
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month-1);
calendar.set(Calendar.DATE, day);
// 如果日期错误,执行该语句,必定抛出异常.
calendar.get(Calendar.YEAR);
} catch (IllegalArgumentException e) {
return false;
}
return true;
}
/**
* 检查日期是否有效
*
* @param year
* @param month
* @param day
* @param hour
* @param minute
* @param second
* @return boolean
*/
public final static boolean chkDateValid(int year,int month,int day,int hour,int minute,int second) {
try {
/*
// 如果输入日期不是8位的,判定为false.
if (null == date || "".equals(date) || !date.matches("[0-9]{8}")) {
return false;
}
*/
if((year<2000)||(year>3000))
{
return false;
}
if((month<=0)||(month>12))
{
return false;
}
if((day<=0)||(day>31))
{
return false;
}
if((hour<0)||(hour>24))
{
return false;
}
if((minute<0)||(minute>60))
{
return false;
}
if((second<0)||(second>60))
{
return false;
}
//当 年、月、日都有效时。
Calendar calendar = Calendar.getInstance();
// 当 Calendar 处于 non-lenient 模式时,如果其日历字段中存在任何不一致性,它都会抛出一个异常。
calendar.setLenient(false);
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month-1);
calendar.set(Calendar.DATE, day);
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
calendar.set(Calendar.SECOND, second);
// 如果日期错误,执行该语句,必定抛出异常.
calendar.get(Calendar.YEAR);
} catch (IllegalArgumentException e) {
e.printStackTrace();
return false;
}
return true;
}
/**
* 日期转化为字符串,如2007年1月2日 转为 2007010203
* @param year
* @param month
* @param day
* @return String 2007010203
*/
public final static String praseDateToString(int year,int month,int day)
{
return String.format("%04d",year)+ String.format("%02d",month) + String.format("%02d",day);
}
/**
* 日期转化为字符串,如2007年1月2日3时4分5秒 转为 20070102030405
* @param year
* @param month
* @param day
* @param hour
* @param minute
* @param second
* @return String 20070102030405
*/
public final static String praseDateToString(int year,int month,int day,int hour,int minute,int second)
{
return String.format("%04d",year)+ String.format("%02d",month) + String.format("%02d",day) + String.format("%02d",hour) + String.format("%02d",minute) + String.format("%02d",second);
}
/**
* 日期转化为格式化字符串,如2007年1月2日3时4分5秒 转为 2007-01-02 03:04:05
* @param year
* @param month
* @param day
* @param hour
* @param minute
* @param second
* @return String 2007-01-02 03:04:05
*/
public final static String praseDateToStringFormat(int year,int month,int day,int hour,int minute,int second)
{
return String.format("%04d",year) + "-" + String.format("%02d",month) + "-" + String.format("%02d",day) + " " + String.format("%02d",hour) + ":" + String.format("%02d",minute) + ":" + String.format("%02d",second);
}
/**
* 日期转化为整数,如2007年1月2日 转为 2007010203
* @param year
* @param month
* @param day
* @return long 2007010203
*/
public final static long praseDateToLong(int year,int month,int day)
{
return Long.parseLong(String.format("%04d",year)+ String.format("%02d",month) + String.format("%02d",day));
}
/**
* 日期转化为整数,如2007年1月2日3时4分5秒 转为 20070102030405
* @param year
* @param month
* @param day
* @param hour
* @param minute
* @param second
* @return long 20070102030405
*/
public final static Long praseDateToLong(int year,int month,int day,int hour,int minute,int second)
{
return Long.parseLong(String.format("%04d",year)+ String.format("%02d",month) + String.format("%02d",day) + String.format("%02d",hour) + String.format("%02d",minute) + String.format("%02d",second));
}
/**
* <pre>
* 取现在时间
* 返回整数数组 {YYYY,MM,DD,HH,MM,SS}
* 如:{2007,07,04,10,36,01}
* </pre>
*/
public final static int[] getIntDateNow() {
int[] intNow = new int[6];
try {
Calendar calendar = Calendar.getInstance();
// 当 Calendar 处于 non-lenient 模式时,如果其日历字段中存在任何不一致性,它都会抛出一个异常。
//calendar.setLenient(false);
// 如果日期错误,执行该语句,必定抛出异常.
intNow[0] = calendar.get(Calendar.YEAR);
intNow[1] = calendar.get(Calendar.MONTH)+1;
intNow[2] = calendar.get(Calendar.DAY_OF_MONTH);
intNow[3] = calendar.get(Calendar.HOUR_OF_DAY);
intNow[4] = calendar.get(Calendar.MINUTE);
intNow[5] = calendar.get(Calendar.SECOND);
} catch (IllegalArgumentException e) {
for(int i = 0;i<6; i++)
intNow[i] = 0;
}
return intNow;
}
/**
* <pre>
* 取现在时间
* 返回字符串 YYYYMMDDHHMMSS
* 如:20070102030405
* </pre>
*/
public final static String getStringDateNow() {
int[] intNow = getIntDateNow();
return praseDateToString(intNow[0],intNow[1],intNow[2],intNow[3],intNow[4],intNow[5]);
}
/**
* <pre>
* 取现在时间
* 返回格式化字符串 YYYY-MM-DD HH:MM:SS
* 如:2007-01-02 03:04:05
* </pre>
*/
public final static String getStringDateNowFormat() {
int[] intNow = getIntDateNow();
return praseDateToStringFormat(intNow[0],intNow[1],intNow[2],intNow[3],intNow[4],intNow[5]);
}
/**
* <pre>
* 取现在时间
* 返回Long YYYYMMDDHHMMSS
* 如:20070102030405
* </pre>
*/
public final static long getLongDateNow() {
int[] intNow = getIntDateNow();
return praseDateToLong(intNow[0],intNow[1],intNow[2],intNow[3],intNow[4],intNow[5]);
}
}