String转Date常见三种方式:SimpleDateFormat、org.apache.commons.lang3.time.DateUtils、DateTimeFormatter(Java 8)
描述
SimpleDateFormat
线程不安全、文本匹配灵活
DateUtils
工具类、支持日期运算
DateTimeFormatter
线程安全、配合LocalDateTime支持链式编程、方便比较运算
下面为示例代码
/**
* 指定当前时间-指定时间是否大于30秒
*/
//SimpleDateFormat
private static void m1() throws ParseException {
String endTime = "哈哈2020-02-07 18:58:02.0你好";//支持特殊格式转换
String format = "哈哈yyyy-MM-dd HH:mm:ss";
SimpleDateFormat sdf = new SimpleDateFormat(format);
Date edate = sdf.parse(endTime);
Date now = new Date();
String nowStr = DateFormatUtils.format(now, format);
if(DateUtils.addSeconds(edate, 30).before((now))){
logger.info("true endTime={} now={}",endTime, nowStr);
}else{
logger.info("false endTime={} now={}",endTime, nowStr);
}
}
//DateUtils
private static void m3() throws ParseException {
String endTime = "2020-02-07 18:58:02.0";
String format = "yyyy-MM-dd HH:mm:ss";
Date edate = DateUtils.parseDate(endTime, format, "yyyy-MM-dd HH:mm:ss.SSS");//支持多格式匹配
Date now = new Date();
String nowStr = DateFormatUtils.format(now, format);
if(DateUtils.addSeconds(edate, 30).before((now))){
logger.info("true endTime={} now={}",endTime, nowStr);
}else{
logger.info("false endTime={} now={}",endTime, nowStr);
}
}
//DateTimeFormatter
private static void m2(){
String endTime = "2020-02-07 18:58:02";
String format = "yyyy-MM-dd HH:mm:ss";
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(format);
String nowStr = now.format(dateTimeFormatter);
if(LocalDateTime.parse(endTime, dateTimeFormatter)
.plusSeconds(30).isBefore(LocalDateTime.now())){//链式编程
logger.info("true endTime={} now={}",endTime, nowStr);
}else{
logger.info("false endTime={} now={}",endTime, nowStr);
}
}