/*
说明:如果是 JDK 8 的应用,可以使用 Instant 代替 Date , LocalDateTime 代替 Calendar ,
DateTimeFormatter 代替 SimpleDateFormat ,官方给出的解释: simple beautiful strong
immutable thread - safe 。
*/
public class DateThreadUtil {
public static void main(String[] args) throws ParseException {
//常规不考虑并发的情况下处理
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateStr1 = sdf.format(new Date());
System.out.println("dateStr1 = " + dateStr1);
//常规不考虑并发的情况下处理 转换
Date date1 = sdf.parse("2019-10-10");
System.out.println("date1 = " + date1);
//并发-jdk低于1.8的情况
String dateStr2 = df.get().format(new Date());
Date date2 = df.get().parse("2019-10-10");
// Instant
Instant instant = Instant.now();
String instantStr = instant.toString();
System.out.println(instantStr);
//并发-jdk大于等于1.8线程安全的
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
LocalDateTime localDateTime = LocalDateTime.now();
System.out.println("日期转换为字符串: " + dtf.format(localDateTime));
System.out.println("字符串解析成日期: " + dtf.parse("2017-06-17 11:11:11"));
//并发-jdk大于等于1.8线程安全的LocalDateTime
LocalDateTime date = LocalDateTime.parse("2017-06-17 11:11:11", dtf);
System.out.println("字符串解析成时间:" + dtf.format(date));
}
private static final ThreadLocal<DateFormat> df = new ThreadLocal<DateFormat>() {
@Override
protected DateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd");
}
};
}
并发情况下的时间解决方式
于 2020-02-24 10:01:31 首次发布