Java日期处理,
分享于 点击 26996 次 点评:38
Java日期处理,
import java.util.Calendar;
/**
*
* 日期时间的处理
*
* @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]);
}
}
相关文章
- 暂无相关文章
用户点评