字符串日期 转换成 需要的格式的 字符串日期
调用:dateformat(String pattern,Object date, boolean ifNullGetNow);
参数1:patern:你想要的日期格式,如:“yyyyMMddHHmmss”,“yyyy-MM-dd HH:mm:ss”,“MMdd”,“yyyy/MM/dd HH:mm:ss”,“dd”,显示单个或多个,都支持,你想要什么给什么。如果你给个年1989,你想要年月日时分秒,后面补0
参数2:date:你想要转的日期字符串,这里是Object是为了支持数据库查出来在map里是Object格式。如果你是date格式或者其他类型的,这种特殊类型你可以用其他的转换方法,这里只支持正常数据库保存的字符串格式。这个参数可以为空,传空,不报错,后台返回给你个""空串。此时,你想如果为空返回当前时间的你要的格式。没问题,最后一个参数控制。
参数3:ifNullGetNow :如果为空获取当前时间。如果你传的日期不为空,你还想要当前时间,不好意思,没有。如果你日期传了空,想要当前时间,这个字段传true,如果不想要当前时间,那么传false,我返回空串。
/**
* 传入日期格式和日期,返回目标日期String
* @description 日期格式转换,从一种string日期格式转换成目标string日期格式
* @param pattern 需要转换的日期格式
* @param date 需要转换的日期 如"2005-11:07.11/22:55" "2005-11:07.11/22:55" "2005-11-07"
* @param ifNullGetNow 如果为空或空串,true获取当前时间的需要格式,如果为false,返回date
* @return String 目标字符串日期格式
* @author LLZ
* @date 2021年7月26日
*/
public static String dateformat(String pattern,Object date, boolean ifNullGetNow) {
if(date == null || "".equals(date)) {
if (ifNullGetNow) {
return new SimpleDateFormat(pattern).format(new Date());
} else {
return "";
}
}
String dateStr = date.toString();
//将非日期的分隔符去掉
dateStr = dateStr.replace("-", "").replace(":", "").replace(" ", "").replace("/", "").replace(".", "");
//yyyyMMddHHmmss 使用这个14位的作为标准格式
int length = 14 - dateStr.length();
// 不足14位补0
if(length > 0) {
dateStr = dateStr + String.format("%0" + length + "d", 0);
}
Date temp;
try {
temp = new SimpleDateFormat("yyyyMMddHHmmss").parse(dateStr);//转换成yyyyMMddHHmmss统一格式,拿到Date格式
return new SimpleDateFormat(pattern).format(temp);//把Date格式再格式化为pattern格式的字符串日期
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
网上有很多,不合格,要么不兼容,要么麻烦的要死,写个简单的分享给大家。兼容性很高。给我个字符串日期,然后给我你想要的格式如yyyy-MM-dd或yyyyMMddHHmm或MMdd等等,然后我返回给你这个格式的字符串日期。
我自己写的自己很满意,如果为空,你要是要当前时间的,传个true,我给你当前时间的你要的日期,如果不要,我传空串给你,也不会报错,也不会抛异常。nice,代码简洁,通用性强,易达到目的,且性能好。反正我自己用的非常爽。
调用方法:dateformat(“yyyy-MM-dd HH:mm:ss”,dateString,false);//时间为空的时候,false不要当前时间,true要当前时间。