日期转换工具类:由TimeStamp时间戳转换为日期格式的字符串

发布时间 2023-11-13 10:11:37作者: 勇敢-的心
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

@Slf4j
public class DateTimeUtil {
public static final String DATE_PATTERN = "yyyy-MM-dd";
public static final String DATE_PATTERN_YMD = "yyyyMMdd";
public static final String DATE_PATTERN_YMD_HM = "yyyy-MM-dd HH:mm";
public static final String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";


public static void main(String[] args) {
Long createTime = 1650937800L;
String dateStr = timeStamptoDateStr(createTime, null);
log.info("=======dateStr:{} ", dateStr);
}

/**
* timeStampDateStr 时间戳转日期字符
*
* @param timeStamp timeStamp
* @param pattern pattern
* @return 日期格式字符
*/
public static String timeStamptoDateStr(Long timeStamp, String pattern) {
if (timeStamp == null) {
return null;
}
if (StringUtils.isEmpty(pattern)) {
pattern = DateTimeUtil.DATE_TIME_PATTERN;
}
SimpleDateFormat sdf = new SimpleDateFormat(pattern);

// 时间戳分为10位数到秒级时间戳、13位到毫秒级时间戳,如果转换到了1970年,是因为需要的13位时间戳却用10位时间戳传参
if (String.valueOf(timeStamp).length() == 10) {
return sdf.format(timeStamp * 1000);
}
return sdf.format(timeStamp);
}

/**
* timeStampToDate 时间戳转 Date
*
* @param timeStamp timeStamp
* @return Date
*/
public static Date timeStampToDate(long timeStamp) {
String dateStr = timeStamptoDateStr(timeStamp, null);
if (StringUtils.isEmpty(dateStr)) {
return null;
}
SimpleDateFormat sdf = new SimpleDateFormat(DateTimeUtil.DATE_TIME_PATTERN);
try {
return sdf.parse(dateStr);
} catch (ParseException e) {
log.error("===timeStampToDate RuntimeException:{}", e);
return null;
}
}

}