java8?時(shí)間日期的使用與格式化示例代碼詳解
LocalDate
// 日期 LocalDate localDate = LocalDate.now(); System.out.println(localDate); // yyyy-MM-dd System.out.println(localDate.getYear()); // 年 System.out.println(localDate.getMonth()); // 月 System.out.println(localDate.getMonthValue()); // 月 System.out.println(localDate.getDayOfMonth()); // 日 System.out.println(localDate.atStartOfDay()); // 獲取今天的開(kāi)始時(shí)間 LocalDate localDate1 = LocalDate.of(2019, 10, 18); LocalDate localDate2 = LocalDate.of(2019, 10, 17); System.out.println(localDate1.isBefore(localDate2)); System.out.println(localDate1.plusDays(110)); System.out.println(localDate1.minusMonths(18));
LocalTime
// 時(shí)間 LocalTime localTime = LocalTime.now(); System.out.println(localTime); // 09:36:11.619011900 System.out.println(localTime.getHour()); // 時(shí) System.out.println(localTime.getMinute()); // 分 System.out.println(localTime.getSecond()); // 秒 System.out.println(localTime.getNano()); // 納秒
LocalDateTime
// 時(shí)間 + 日期 LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime); System.out.println(localDateTime); // 2022-06-27T09:36:11.619011900
Instant
Instant類用于處理機(jī)器可讀的時(shí)間格式,它將日期時(shí)間存儲(chǔ)在unix時(shí)間戳中。
Instant instant = Instant.now(); System.out.println(instant.toEpochMilli()); // 時(shí)間戳 毫秒 13位 System.out.println(instant.getEpochSecond()); // 時(shí)間戳 秒 10位
Duration
Duration用于表示兩個(gè)時(shí)間之間的差值。
LocalTime localTime1 = LocalTime.now(); LocalTime localTime2 = localTime1.plusSeconds(100); Duration duration = Duration.between(localTime1, localTime2); System.out.println(duration.getSeconds()); // 100
Period
Period用于表示兩個(gè)日期之間的差值。
LocalDate localDate1 = LocalDate.of(2019, 10, 18); LocalDate localDate2 = LocalDate.of(2019, 10, 17); Period period = Period.between(localDate1, localDate2); System.out.println(period.getDays()); // -1
ZoneId
方法 | 描述 |
---|---|
String getDisplayName(TextStyle style,Locale locale) | 用于獲取區(qū)域的文本表示形式,例如“北京時(shí)間”或者"+08:00" |
abstract String getId() | 用于獲取唯一的時(shí)區(qū)ID |
static ZoneId of(String zoneId) | 用于從ID中獲取ZoneId的實(shí)例, 以確保該ID有效并可供使用 |
static ZoneId systemDefault() | 用于獲取系統(tǒng)默認(rèn)時(shí)區(qū) |
boolean equals(Object obj) | 用于檢查該時(shí)區(qū)ID是否等于另一個(gè)時(shí)區(qū)ID |
時(shí)間與字符串之間的轉(zhuǎn)化
java 8之前格式化java.util.Date都是用java.text.SimpleDateFormat類,線程不安全,java 8開(kāi)始如果格式化LocalDate、LocalDateTime要使用java.time.format.DateTimeFormatter類,線程安全。LocalDateTime的api跟LocalDate大多數(shù)是相同的,LocalDate格式化的方式同樣適用于LocalDateTime。LocalDate.toString()的默認(rèn)格式是yyyy-MM-dd。
// 時(shí)間->字符串 LocalDate localDate = LocalDate.now(); System.out.println(localDate); // yyyy-MM-dd System.out.println(localDate.format(DateTimeFormatter.ISO_DATE)); System.out.println(localDate.format(DateTimeFormatter.ofPattern("yyyy/MM/dd"))); // 字符串->時(shí)間 LocalDate date = LocalDate.parse("2019-10-18", DateTimeFormatter.ISO_DATE); System.out.println(date); System.out.println(LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));
與舊Date API的轉(zhuǎn)換
// Date to Instant Instant timestamp = new Date().toInstant(); // Date to LocalDateTime ZoneId zone = ZoneId.systemDefault(); LocalDateTime localDateTime = LocalDateTime.ofInstant(timestamp, zone); System.out.println(localDateTime); // Instant to Date Date date = Date.from(timestamp); System.out.println(date);
到此這篇關(guān)于java8 時(shí)間日期的使用與格式化的文章就介紹到這了,更多相關(guān)java8 時(shí)間日期格式化內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java unicode轉(zhuǎn)碼為中文實(shí)例
這篇文章主要介紹了java unicode轉(zhuǎn)碼為中文的實(shí)例,大家參考使用吧2013-12-12Struts2實(shí)現(xiàn)對(duì)action請(qǐng)求對(duì)象的攔截操作方法
這篇文章主要介紹了Struts2實(shí)現(xiàn)對(duì)action請(qǐng)求對(duì)象的攔截操作方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-11-11MyBatis-Plus+達(dá)夢(mèng)數(shù)據(jù)庫(kù)實(shí)現(xiàn)高效數(shù)據(jù)持久化的示例
這篇文章主要介紹了MyBatis-Plus和達(dá)夢(mèng)數(shù)據(jù)庫(kù)實(shí)現(xiàn)高效數(shù)據(jù)持久化,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-08-08