@Simon

时间工具类支持格式检查,检查yyyy-MM-dd、yyyy_MM_dd格式包含闰年,平年的检查,检查HH:mm:ss,支持日期转时间戳,支持按照格式日期转时间戳,支持时间戳转日期,还在添加一点点积累。

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import org.apache.commons.lang3.StringUtils;

import lombok.extern.slf4j.Slf4j;

/**
* 时间工具类
*
* @author Simon
* @date 2018年7月02日
*/
@Slf4j
public class DateUtils {

private DateUtils() {

}

/**
* 按照格式检查
*
* @param dateStr
* @param format
*/
public static void CheckFormat(final String dateStr, final String format) {

DateFormat formatter = new SimpleDateFormat(format);
Boolean flag = false;
try {
Date date = formatter.parse(dateStr);
System.out.println(date);
}
catch (Exception e) {
log.error("时间格式转化错误");
flag = true;
}
if (flag) {
//todo
//出现异常后续处理
}

}

/**
* 检查yyyyMMdd
*
* @param dateStr
*
* 工具类检查支持判别闰年,平年月份
*/
public static void checkDate(String dateStr) {
String rexp = "((^((1[8-9]\\d{2})|([2-9]\\d{3}))([-\\/\\._])(10|12|0?[13578])([-\\/\\._])(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\\d{2})|([2-9]\\d{3}))([-\\/\\._])(11|0?[469])([-\\/\\._])(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\\d{2})|([2-9]\\d{3}))([-\\/\\._])(0?2)([-\\/\\._])(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([3579][26]00)([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([1][89][0][48])([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([2-9][0-9][0][48])([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([1][89][2468][048])([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([2-9][0-9][2468][048])([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([1][89][13579][26])([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([2-9][0-9][13579][26])([-\\/\\._])(0?2)([-\\/\\._])(29)$))";
Pattern p = Pattern.compile(rexp);
Matcher m = p.matcher(dateStr);
boolean dateFlag = m.matches();
if (!dateFlag) {
log.error("时间格式转化错误");
//todo
//出现异常后续处理
}
log.info("时间转化成功");
}

/**
* 检查HH:mm:ss
*
* @param timeStr
*/
public static void checkTime(String timeStr) {
String rexp = "(0?[0-9]|1\\d|2[0-3])(\\:(0?[0-9]|[1-5]\\d)){2}$";
// String rexp =
// "((^((1[8-9]\\d{2})|([2-9]\\d{3}))([-\\/\\._])(10|12|0?[13578])([-\\/\\._])(3[01]|[12][0-9]|0?[1-9])$)|(^((1[8-9]\\d{2})|([2-9]\\d{3}))([-\\/\\._])(11|0?[469])([-\\/\\._])(30|[12][0-9]|0?[1-9])$)|(^((1[8-9]\\d{2})|([2-9]\\d{3}))([-\\/\\._])(0?2)([-\\/\\._])(2[0-8]|1[0-9]|0?[1-9])$)|(^([2468][048]00)([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([3579][26]00)([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([1][89][0][48])([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([2-9][0-9][0][48])([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([1][89][2468][048])([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([2-9][0-9][2468][048])([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([1][89][13579][26])([-\\/\\._])(0?2)([-\\/\\._])(29)$)|(^([2-9][0-9][13579][26])([-\\/\\._])(0?2)([-\\/\\._])(29)$))";
Pattern p = Pattern.compile(rexp);
Matcher m = p.matcher(timeStr);
boolean dateFlag = m.matches();
if (!dateFlag) {
log.error("时间格式转化错误");
//todo
//出现异常后续处理
}
log.info("时间转化成功");
}

/**
* 日期转时间戳
*
* @param s
* @return
*/
public static String dateToStamp(final String s) {
String res;
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = null;
try {
date = simpleDateFormat.parse(s);
}
catch (ParseException e) {

e.printStackTrace();
}
long ts = date.getTime();
res = String.valueOf(ts);
return res;
}

/**
* 日期转时间戳
*
* @param date_str
* @param format
* @return
*/
public static String date2TimeStamp(final String date_str, final String format) {
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
return String.valueOf(sdf.parse(date_str).getTime() / 1000);
}
catch (Exception e) {
e.printStackTrace();
}
return "";
}

/**
* 时间戳转日期
*
* @param seconds
* @param format
* @return
*/
public static String timeStamp2Date(final Long seconds, String format) {
if (seconds == null) {
return "";
}
if (format == null || format.isEmpty()) {
format = "yyyy-MM-dd HH:mm:ss";
}
SimpleDateFormat sdf = new SimpleDateFormat(format);
return sdf.format(new Date(seconds));
}
}