背景:在校验模板导入场景下,有时避免不了需要判断输入字符串是否满足要求日期格式,并返回所需要的日期格式。
以下是利用SimpleDateFormat进行校验的代码
/**通过 SimpleDateFormat解析字符串时是否异常判断字符串是否符要求的日期格式
* @param dString
* @return
*/
public String newDateFormat(){
try {
String dString = "20210712102959";
//输入字符串的格式,把字符串解析成日期格式
SimpleDateFormat sFormat1 = new SimpleDateFormat("yyyyMMddHHmmss");
//设置Lenient属性为false,表示严格解析日期;否则会出现20210712102960解析成 20210712103000的情况
sFormat1.setLenient(false);
Date date = sFormat1.parse(dString);
System.out.println(date);
//需要转换的时间格式
SimpleDateFormat sFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String newDateFormat = sFormat.format(date);
System.out.println(newDateFormat);
return newDateFormat;
} catch (Exception e) {
System.out.println("输入时间格式错误");
return null;
}
}
日期格式详解(部分):
:
时间分隔符,在某些区域设置中,可以使用其他字符表示时间分隔符。时间分隔符在格式化时间值时分隔小时、分钟和秒。
/
日期分隔符,在某些区域设置中,可以使用其他字符表示日期分隔符。日期分隔符在格式化日期值时分隔日、月和年。
d
将日显示为不带前导零的数字(如 1)。
dd
将日显示为带前导零的数字(如 01)。
M
将月份显示为不带前导零的数字(如一月表示为 1)。
MM
将月份显示为带前导零的数字。
h
使用 12 小时制将小时显示为不带前导零的数字(例如 1:15:15 PM)。
hh
使用 12 小时制将小时显示为带前导零的数字(例如 01:15:15 PM)。
H
使用 24 小时制将小时显示为不带前导零的数字(例如 1:15:15)。
HH
使用 24 小时制将小时显示为带前导零的数字(例如 01:15:15)。
m
将分钟显示为不带前导零的数字(例如 12:1:15)。
mm
将秒显示为带前导零的数字(例如 12:15:05)。
y
将年份 (0-9) 显示为不带前导零的数字。
yy
以带前导零的两位数字格式显示年份。
yyy 或 yyyy
以四位数字格式显示年份。