Java日期操作方法工具类实例【包含日期比较大小,相加减,判断,验证,获取年份等】日期操作方法工具类实例【包含日期比较大小,相加减,判断,验证,获取年份等】
主要介绍了Java日期操作方法工具类,结合完整实例形式分析了java针对日期的各种常见操作,包括日期比较大小,相加减,判断,验证,获取年份、天数、星期等,需要的朋友可以参考下
本文实例讲述了Java日期操作方法工具类。分享给大家供大家参考,具体如下:
package com.gcloud.common;
import org.apache.http.util.TextUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Pattern;
/**
* 日期时间工具类
* Created by charlin on 2017/9/3.
*/
public class DateUtil {
public static final String CHINA_DATE_FORMAT = "yyyy年MM月dd日";
public static final String DATETIME_FORMAT = "yyyy-MM-dd HH:mm:ss";
public static final String DATE_FORMAT = "yyyy-MM-dd";
public static final String TIME_FORMAT = "HH:mm:ss";
//----------------判断-----------------------------------------------
/**
* 是否是润年
* @param yearNum
* @return
*/
public static boolean isLeapYear(int yearNum) {
boolean isLeep = false;
if ((yearNum % 4 == 0) && (yearNum % 100 != 0))
isLeep = true;
else if (yearNum % 400 == 0)
isLeep = true;
else {
isLeep = false;
}
return isLeep;
}
/**
* 判断是否是日期
*
* @param date
* @return
*/
public static boolean isDate(String date) {
//判断年月日的正则表达式,接受输入格式为2010-12-24,可接受平年闰年的日期
String regex = "(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)";
Pattern pattern = Pattern.compile(regex);
return pattern.matcher(date).matches();
}
/**
* 验证是不是生日
*
* @param birthday
* @return
*/
public static boolean verifyBirthDay(String birthday) {
if (TextUtils.isEmpty(birthday)) return false;
if (!birthday.contains("-")) return false;
String[] arr = birthday.split("-");
if (null == arr || arr.length != 3 || arr[0].length() != 4 || arr[1].length() != 2 || arr[2].length() != 2)
return false;
int year = getYear(new Date());
int birthYear = Integer.parseInt(arr[0]);
if (birthYear <= 1900 || birthYear > year) return false;
String curDate = formatDate(new Date(), DATE_FORMAT);
if (birthday.compareTo(curDate) > 0) return false;
return isDate(birthday);
}
//-------------------自动转化--------------------------------------------
/**
* 把字符串自动转化为时间格式
*
* @param dateStr
* @return
*/
public static Date parseDateByAuto(String dateStr) {
if (StringUtil.isEmpty(dateStr)) {
return null;
}
String format = DATE_FORMAT;
if (dateStr.indexOf("/") > -1) {
format = format.replace("-", "/");
}
if (dateStr.indexOf(":") != -1) {
format += " HH:mm";
}
//存在秒
if (dateStr.indexOf(":") != dateStr.lastIndexOf(":")) {
format += ":ss";
}
return parseDate(dateStr, format);
}
/**
* 自动识别格式
* @param date
* @return
*/
public static String formatDateByAuto(Date date){
String format = DATE_FORMAT;
if( !(date instanceof java.sql.Date) && (date.getSeconds()>0||date.getMinutes()>0||date.getHours()>0)){
format = DATETIME_FORMAT;
}
return formatDate(date, format);
}
//------------当前日期与时间 --------------------------------
/**取当前日期*/
public static Date getCurrDate() {return parseDate(formatDate(new Date())); }
/**取当前时间*/
public static Date getCurrDateTime() {return parseDate(formatDate(new Date())); }
/**取当前日期*/
public static String getCurrDateStr() { return formatDate(new Date()); }
/**取当前时间*/
public static String getCurrDateTimeStr() { return formatDate(new Date(), DATETIME_FORMAT);}
public static String formatCurrDate() {return formatDate(new Date(),DATE_FORMAT); }
public static String formatCurrDateTime() {return formatDate(new Date(),DATETIME_FORMAT);}
public static String formatCurrDateToS(String strFormat) {return formatDate(new Date(), strFormat); }
//-----------时间计算--------------------------------------------
/**
* 时间相减
* @param strDateBegin
* @param strDateEnd
* @param iType
* @return
*/
public static int getDiffDate(String strDateBegin, String strDateEnd, int iType) {
Calendar calBegin = Calendar.getInstance();