JDK8時間相關類超詳細總結(含多個實例)
一、帶時區的時間
1.獲取當前時間對象(帶時區)
import java.time.ZonedDateTime; public class demo1 { public static void main(String[] args) { ZonedDateTime now = ZonedDateTime.now(); System.out.println(now); } }
2023-01-13T19:24:18.389+08:00[Asia/Shanghai]
2.獲取指定的時間對象(帶時區)1/年月日時分秒納秒方式指定
import java.time.Instant; public class demo1 { public static void main(String[] args) { ZonedDateTime time1 = ZonedDateTime.of(2023, 1, 1, 8, 30, 0, 0, ZoneId.of("Asia/Shanghai")); System.out.println(time1); } }
2023-01-01T08:30+08:00[Asia/Shanghai]
3.通過Instant + 時區的方式指定獲取時間對象
import java.time.Instant; public class demo1 { public static void main(String[] args) { Instant instant = Instant.ofEpochMilli(0L); ZoneId zoneId = ZoneId.of("Asia/Shanghai"); ZonedDateTime time2 = ZonedDateTime.ofInstant(instant, zoneId); System.out.println(time2); } }
1970-01-01T08:00+08:00[Asia/Shanghai]
4.修改時間
import java.time.Instant; import java.time.ZoneId; import java.time.ZonedDateTime; public class Demo8 { public static void main(String[] args) { Instant instant = Instant.ofEpochMilli(0L); ZoneId zoneId = ZoneId.of("Asia/Shanghai"); ZonedDateTime time2 = ZonedDateTime.ofInstant(instant, zoneId); ZonedDateTime time3 = time2.withYear(2000); System.out.println(time3); ZonedDateTime time4 = time3.minusYears(1); System.out.println(time4); ZonedDateTime time5 = time4.plusYears(1); System.out.println(time5); } }
2000-01-01T08:00+08:00[Asia/Shanghai]
1999-01-01T08:00+08:00[Asia/Shanghai]
2000-01-01T08:00+08:00[Asia/Shanghai]
二、DateTimeFormatter
import java.time.Instant; import java.time.ZoneId; import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; //獲取時間對象 ZonedDateTime time = Instant.now().atZone(ZoneId.of("Asia/Shanghai")); // 解析/格式化器 DateTimeFormatter dtf1=DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm;ss EE a"); // 格式化 System.out.println(dtf1.format(time));
2023-01-14 23:55;55 星期六 下午
三、LocalDate
1. 獲取當前時間的日歷對象(包含年月日)
//1.獲取當前時間的日歷對象(包含 年月日) LocalDate nowDate = LocalDate.now(); //System.out.println("今天的日期:" + nowDate);
2.獲取指定的時間的日歷對象
LocalDate ldDate = LocalDate.of(2023, 1, 1); System.out.println("指定日期:" + ldDate); System.out.println("============================="); //3.get系列方法獲取日歷中的每一個屬性值//獲取年 int year = ldDate.getYear(); System.out.println("year: " + year); //獲取月//方式一: Month m = ldDate.getMonth(); System.out.println(m); System.out.println(m.getValue()); //方式二: int month = ldDate.getMonthValue(); System.out.println("month: " + month); //獲取日 int day = ldDate.getDayOfMonth(); System.out.println("day:" + day); //獲取一年的第幾天 int dayofYear = ldDate.getDayOfYear(); System.out.println("dayOfYear:" + dayofYear); //獲取星期 DayOfWeek dayOfWeek = ldDate.getDayOfWeek(); System.out.println(dayOfWeek); System.out.println(dayOfWeek.getValue()); //is開頭的方法表示判斷 System.out.println(ldDate.isBefore(ldDate)); System.out.println(ldDate.isAfter(ldDate)); //with開頭的方法表示修改,隻能修改年月日 LocalDate withLocalDate = ldDate.withYear(2000); System.out.println(withLocalDate); //minus開頭的方法表示減少,隻能減少年月日 LocalDate minusLocalDate = ldDate.minusYears(1); System.out.println(minusLocalDate); //plus開頭的方法表示增加,隻能增加年月日 LocalDate plusLocalDate = ldDate.plusDays(1); System.out.println(plusLocalDate);
四、LocalTime
1.獲取本地時間的日歷對象(包含時分秒)
LocalTime nowTime = LocalTime.now(); System.out.println("今天的時間:" + nowTime); int hour = nowTime.getHour();//時 System.out.println("hour: " + hour); int minute = nowTime.getMinute();//分 System.out.println("minute: " + minute); int second = nowTime.getSecond();//秒 System.out.println("second:" + second); int nano = nowTime.getNano();//納秒 System.out.println("nano:" + nano); System.out.println("------------------------------------"); System.out.println(LocalTime.of(8, 20));//時分 System.out.println(LocalTime.of(8, 20, 30));//時分秒 System.out.println(LocalTime.of(8, 20, 30, 150));//時分秒納秒 LocalTime mTime = LocalTime.of(8, 20, 30, 150);
2.is系列的方法
System.out.println(nowTime.isBefore(mTime)); System.out.println(nowTime.isAfter(mTime));
3.with系列的方法
這個系列的方法有局限性,隻能修改時、分、秒
System.out.println(nowTime.withHour(10));
4.plus系列的方法
這個系列的方法有局限性,隻能修改時、分、秒
System.out.println(nowTime.plusHours(10));
五、LocalDateTime
1.當前時間的的日歷對象(包含年月日時分秒)
LocalDateTime nowDateTime = LocalDateTime.now(); System.out.println("今天是:" + nowDateTime);//今天是: System.out.println(nowDateTime.getYear());//年 System.out.println(nowDateTime.getMonthValue());//月 System.out.println(nowDateTime.getDayOfMonth());//日 System.out.println(nowDateTime.getHour());//時 System.out.println(nowDateTime.getMinute());//分 System.out.println(nowDateTime.getSecond());//秒 System.out.println(nowDateTime.getNano());//納秒
2.獲取日:當年的第幾天
System.out.println("dayofYear:" + nowDateTime.getDayOfYear());
3.獲取星期
System.out.println(nowDateTime.getDayOfWeek()); System.out.println(nowDateTime.getDayOfWeek().getValue());
4.獲取月份
System.out.println(nowDateTime.getMonth()); System.out.println(nowDateTime.getMonth().getValue()); LocalDate ld = nowDateTime.toLocalDate(); System.out.println(ld); LocalTime lt = nowDateTime.toLocalTime(); System.out.println(lt.getHour()); System.out.println(lt.getMinute()); System.out.println(lt.getSecond());
六、結語
到此這篇關於JDK8時間相關類超詳細總結的文章就介紹到這瞭,更多相關JDK8時間相關類內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- 一篇文章弄懂Java8中的時間處理
- Java 8 Time Api 使用方法技巧
- 詳解Java關於JDK中時間日期的API
- Java8 Instant時間戳使用小記
- Java計算兩個時間段的差的實例詳解