一. 概述
- 在开发过程中,很多时候都需要用到日期,日期类在后端Java类中的工具类是java.util.Date,但前端展示时并不一定是什么格式的日期形式(比如yyyy-MM-dd,又或yyyy-MM-dd HH:mm:ss,又或其他形式),因此在后端代码编写时,需要将前端传入的String类型日期形式转换为Date(并存入数据库),又或将日期数据从数据库中取出来,然后转换成前端需要的String类型。由于上述需求较多,我也写了一个工具类解决这种场景。
二. 日期时间工具类
public class DateUtil {
public static final String DATE_YYYYMMDD = "yyyyMMdd";
public static final String DATE_YYYYMMDDHHMMSS = "yyyy-MM-dd HH:mm:ss";
public static final String DATE_YYYYMMDDHHMM = "yyyy-MM-dd HH:mm";
private static final String TIME_INTERVAL = "%s~%s";
public static Date stringToDate(String dateStr, String suffixTime, String pattern){
if(StringUtils.isEmpty(dateStr)){
return null;
}
try{
SimpleDateFormat format = new SimpleDateFormat(pattern);
return format.parse(dateStr+suffixTime);
}catch (Exception e){
LOGGER.error("DateUtil.stringToDate | 日期转换异常!dateStr={},pattern={}",dateStr,pattern);
return null;
}
}
public static String dateToString(Date date,String pattern){
if(date==null){
return null;
}
try{
SimpleDateFormat format = new SimpleDateFormat(pattern);
return format.format(date);
}catch (Exception e){
LOGGER.error("DateUtil.dateToString | 日期转换异常!date={},pattern={}",date,pattern);
return null;
}
}
public static String dateToStringInterval(Date startDate, Date endDate, String pattern){
try{
SimpleDateFormat format = new SimpleDateFormat(pattern);
return String.format(TIME_INTERVAL,format.format(startDate),format.format(endDate));
}catch (Exception e){
LOGGER.error("DateUtil.dateToStringInterval | 日期转换异常!startDate={},endDate={},pattern={}",startDate,endDate,pattern);
return null;
}
}
}
三.Test
public static void main(String[] args) {
System.out.println(stringToDate("2019-03-12 23:12:02","",DateUtil.DATE_TIME_PATTERN));
System.out.println(stringToDate("2019-03-12"," 00:00:00",DateUtil.DATE_TIME_PATTERN));
}
参考资料
廖雪峰网站