1、 SimpleDateFormat方法不建议使用,因为是线程不安全的。
2、建议使用LocalDateTime,这是JDK8后自带的时间转换方法,并且线程是安全的。
3、定义时间的格式: m-d-yyyy (这是我使用的,使用时更换为自己的时间格式)
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("M-d-yyyy");
4、具体的方法实现
/**
* 验证字符串是否为指定日期格式
*
* @param rawDateStr 待验证字符串
* @return 有效性结果, true 为正确, false 为错误
*/
public boolean dateStrIsValid(String rawDateStr) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("M-d-yyyy");
TemporalAccessor date = null;
try {
date = dateTimeFormatter.parse(rawDateStr);
return rawDateStr.equals(dateTimeFormatter.format(date));
} catch (DateTimeParseException e) {
return false;
}
}
5、TimeUtils工具类
package com.sino.apprelation.dns.utils;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
/**
* @Description: 时间处理工具类
* @Author: liujian
* @Version: 1.0
* @Create Date Time: 2021-10-15 10:27
* @Update Date Time:
* @see
*/
public class TimeUtils {
public static final String FORMAT_SECONDS = "yyyy-MM-dd HH:mm:ss";
public static final String FORMAT_DAY = "yyyy-MM-dd";
/**
* 获得现在的时间,精确到秒,格式为yyyy-MM-dd HH:mm:ss
*
* @return yyyy-MM-dd HH:mm:ss格式的当前时间
*/
public static String getNowTimeToSeconds() {
LocalDateTime localDateTime = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(FORMAT_SECONDS);
return dateTimeFormatter.format(localDateTime);
}
/**
* 获得现在的时间,精确到秒,格式为yyyy-MM-dd HH:mm:ss
*
* @return yyyy-MM-dd HH:mm:ss格式的当前时间
*/
public static String getNowTimeToSecondsDefined() {
LocalDateTime localDateTime = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmm");
return dateTimeFormatter.format(localDateTime);
}
/**
* 获得现在的时间,精确到秒,格式为yyyy-MM-dd HH:mm:ss
*
* @return yyyy-MM-dd HH:mm:ss格式的当前时间
*/
public static String getNowTimeToDays() {
LocalDateTime localDateTime = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(FORMAT_DAY);
return dateTimeFormatter.format(localDateTime);
}
/**
* 获得现在的时间,精确到天,格式为yyyyMMddHHmmss
*
* @return yyyyMMddHHmmss格式的当前时间
*/
public static String getNowTimeToSecondsWithoutLine() {
LocalDateTime localDateTime = LocalDateTime.now();
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
return dateTimeFormatter.format(localDateTime);
}
/**
* 将传递的localDateTime对象转换为格式为yyyy-MM-dd HH:mm:ss的字符串
*
* @param localDateTime 传递的时间对象
* @return yyyy-MM-dd HH:mm:ss格式的时间字符串
*/
public static String parseTimeToSeconds(LocalDateTime localDateTime) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(FORMAT_SECONDS);
return dateTimeFormatter.format(localDateTime);
}
/**
* 将传递的localDateTime对象转换为格式为yyyyMMddHHmmss的字符串
*
* @param localDateTime 传递的时间对象
* @return yyyyMMddHHmmss格式的时间字符串
*/
public static String parseTimeToSecondsWithoutLine(LocalDateTime localDateTime) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyyMMddHHmmss");
return dateTimeFormatter.format(localDateTime);
}
/**
* 将传递的localDateTime对象转换为格式为yyyyMMddHHmmss的字符串
*
* @param time 传递的时间字符串
* @return yyyyMMddHHmmss格式的时间字符串
*/
public static String parseTimeToSecondsWithoutLine(String time) {
LocalDateTime localDateTime = LocalDateTime.parse(time, DateTimeFormatter.ofPattern(FORMAT_SECONDS));
return parseTimeToSecondsWithoutLine(localDateTime);
}
/**
* 将传递的格式为yyyyMMddHHmmss的字符串转换为localDateTime对象
*
* @param time 传递的字符串
* @return 转换后的对象
*/
public static LocalDateTime parseTimeToSeconds(String time) {
DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(FORMAT_SECONDS);
return LocalDateTime.parse(time, dateTimeFormatter);
}
}
上述方法是希望可以帮助大家,也希望大家多多支持,你们的支持是我创作的动力!!!