日常开发中后端得到的字符日期时间往往是多种多样
如:
yyyy-MM-dd HH:mm:ss
yyyy-MM-ddHH:mm:ss
yyyy/MM/dd HH:mm:ss
yyyy/MM/ddHH:mm:ss
如果稍不注意直接转换,后面就可能出现报错。因此我们应该对这些输入不确定的时间进行处理,写一个工具类
public class DateUtils {
private static List<String> formatList = new ArrayList<>();
static {
formatList.add("yyyy-MM-dd HH:mm:ss");
formatList.add("yyyy-MM-ddHH:mm:ss");
formatList.add("yyyy/MM/dd HH:mm:ss");
formatList.add("yyyy/MM/ddHH:mm:ss");
}
public static Date parseDate(String dateStr){
if (StringUtils.isBlank(dateStr)) {
return null;
}
return parseDate(dateStr, formatList);
}
// 循环处理格式化日期
public static Date parseDate(String dateStr, List<String> formatList){
if (StringUtils.isBlank(dateStr)) {
return null;
}
Date date = null;
dateStr = dateStr.trim();
for (String format : formatList) {
SimpleDateFormat sdf = new SimpleDateFormat(format);
try {
date = sdf.parse(dateStr);
break;
} catch (ParseException e) {
continue;
}
}
return date;
}
}
外部调用工具类的public static Date parseDate(String dateStr)方法即可。此时返回的是Date类型(一般保存到数据库的时间是LocalDateTime),我们可以使用JDK8后Date类新增LocalDateTime 转换方法就可以了:
Date date = new Date();
Instant instant = date.toInstant();
ZoneId zone = ZoneId.systemDefault();
//Date转换为LocalDateTime
LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, zone)
如果有不足或可以补充的地址,欢迎指出
版权声明:本文为ls18802694089原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。