Java8的DateTimeFormatter與SimpleDateFormat的區(qū)別詳解
兩者最大的區(qū)別是,Java8的DateTimeFormatter是線程安全的,而SimpleDateFormat并不是線程安全。
package com.main;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Date;
public class Main {
public static void main(String args[]){
//解析日期
String dateStr= "2016年10月25日";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
LocalDate date= LocalDate.parse(dateStr, formatter);
//日期轉(zhuǎn)換為字符串
LocalDateTime now = LocalDateTime.now();
DateTimeFormatter format = DateTimeFormatter.ofPattern("yyyy年MM月dd日 hh:mm a");
String nowStr = now .format(format);
System.out.println(nowStr);
//ThreadLocal來限制SimpleDateFormat
System.out.println(format(new Date()));
}
//要在高并發(fā)環(huán)境下能有比較好的體驗,可以使用ThreadLocal來限制SimpleDateFormat只能在線程內(nèi)共享,這樣就避免了多線程導致的線程安全問題。
private static ThreadLocal<DateFormat> threadLocal = new ThreadLocal<DateFormat>() {
@Override
protected DateFormat initialValue() {
return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
};
public static String format(Date date) {
return threadLocal.get().format(date);
}
}
Java8 (LocalDateTime) 時間轉(zhuǎn)換
注意:LocalDateTime是帶時分秒的
1.將LocalDateTime轉(zhuǎn)為自定義的時間格式的字符串
public static String getDateTimeAsString(LocalDateTime localDateTime, String format) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
return localDateTime.format(formatter);
}
2.將long類型的timestamp轉(zhuǎn)為LocalDateTime
public static LocalDateTime getDateTimeOfTimestamp(long timestamp) {
Instant instant = Instant.ofEpochMilli(timestamp);
ZoneId zone = ZoneId.systemDefault();
return LocalDateTime.ofInstant(instant, zone);
}
3.將LocalDateTime轉(zhuǎn)為long類型的timestamp
public static long getTimestampOfDateTime(LocalDateTime localDateTime) {
ZoneId zone = ZoneId.systemDefault();
Instant instant = localDateTime.atZone(zone).toInstant();
return instant.toEpochMilli();
}
4.將某時間字符串轉(zhuǎn)為自定義時間格式的LocalDateTime
public static LocalDateTime parseStringToDateTime(String time, String format) {
DateTimeFormatter df = DateTimeFormatter.ofPattern(format);
return LocalDateTime.parse(time, df);
}
到此這篇關于Java8的DateTimeFormatter與SimpleDateFormat的區(qū)別詳解的文章就介紹到這了,更多相關Java8 DateTimeFormatter與SimpleDateFormat內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Maven配置文件settings.xml的實現(xiàn)
Maven是一個用于構(gòu)建和管理Java項目的強大工具,它依賴于設置文件來配置和管理其行為,其中最重要的之一便是settings.xml文件,本文主要介紹了Maven配置文件settings.xml的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2024-01-01
java多線程開發(fā)之通過對戰(zhàn)游戲?qū)W習CyclicBarrier
這篇文章給大家分享了關于java多線程開發(fā)中通過對戰(zhàn)游戲?qū)W習CyclicBarrier的相關知識點內(nèi)容,有興趣的朋友們學習參考下。2018-08-08
Java實現(xiàn)ATM系統(tǒng)超全面步驟解讀建議收藏
這篇文章主要為大家詳細介紹了用Java實現(xiàn)簡單ATM機功能,文中實現(xiàn)流程寫的非常清晰全面,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
解決Mybatis-Plus更新方法不更新NULL字段的問題
這篇文章主要介紹了解決Mybatis-Plus更新方法不更新NULL字段的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-12-12
解決IDEA使用springBoot創(chuàng)建項目,lombok標注實體類后編譯無報錯,但是運行時報錯問題
文章詳細描述了在使用lombok的@Data注解標注實體類時遇到編譯無誤但運行時報錯的問題,分析了可能的原因,并提供了解決步驟2025-01-01
Spring Cloud Gateway自定義異常處理Exception Handler的方法小結(jié)
這篇文章主要介紹了Spring Cloud Gateway自定義異常處理Exception Handler的方法,本文通過兩種方法結(jié)合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-08-08

