JDK8 新增的日期時間API

新的時間及日期API位於 java.time 包中,下面是一些關鍵類。
Instant:代表的是時間戳。
LocalDate:不包含具體時間的日期。
LocalTime:不含日期的時間。
LocalDateTime:包含了日期及時間。
一、獲取時間
(1)Instant(時間戳類)
JDK8獲取時間戳特別簡單。Instant類由一個靜態的工廠方法now()可以返回當前時間戳。

Instant instant = Instant.now();
System.out.println("當前時間戳是:" + instant);//當前時間戳是:2018-09-06T10:14:29.460Z
Date date = Date.from(instant);
System.out.println("當前時間戳是:" + date);//當前時間戳是:Thu Sep 06 18:14:29 CST 2018
instant = date.toInstant();

可以看到,當前時間戳是包含日期和時間的,與java.util.Date很類似,事實上Instant就是JDK8以前的Date,可以使用這兩個類中的方法在這兩個類型之間進行轉換。
(2)LocalDate
LocalDate類獲取日期信息。格式爲 2018-09-06

LocalDate nowDate = LocalDate.now();
System.out.println("今天的日期:" + nowDate);//今天的日期:2018-09-06
int year = nowDate.getYear();//年:一般用這個方法獲取年
System.out.println("year:" + year);//year:2018
int month = nowDate.getMonthValue();//月:一般用這個方法獲取月
System.out.println("month:" + month);//month:9
int day = nowDate.getDayOfMonth();//日:當月的第幾天,一般用這個方法獲取日
System.out.println("day:" + day);//day:6        
int dayOfYear = nowDate.getDayOfYear();//日:當年的第幾天 System.out.println("dayOfYear:" + dayOfYear);//dayOfYear:249
     //星期
System.out.println(nowDate.getDayOfWeek());//THURSDAY
System.out.println(nowDate.getDayOfWeek().getValue());//4
    //月份
System.out.println(nowDate.getMonth());//SEPTEMBER
System.out.println(nowDate.getMonth().getValue());//9

(3)LocalTime
LocalTime類獲取時間信息。格式爲 15:33:56.749

LocalTime nowTime = LocalTime.now();
System.out.println("今天的時間:" + nowTime);//今天的時間:15:33:56.749
int hour = nowTime.getHour();//時
System.out.println("hour:" + hour);//hour:15
int minute = nowTime.getMinute();//分
System.out.println("minute:" + minute);//minute:33
int second = nowTime.getSecond();//秒
System.out.println("second:" + second);//second:56
int nano = nowTime.getNano();//納秒
System.out.println("nano:" + nano);//nano:749000000

(4)LocalDateTime
LocalDateTime類獲取日期時間信息。格式爲 2018-09-06T15:33:56.750

LocalDateTime nowDateTime = LocalDateTime.now();
System.out.println("今天是:" + nowDateTime);//今天是:2018-09-06T15:33:56.750
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());//納秒		       		    //日:當年的第幾天
System.out.println("dayOfYear:"nowDateTime.getDayOfYear());//dayOfYear:249
     //星期
System.out.println(nowDateTime.getDayOfWeek());//THURSDAY
System.out.println(nowDateTime.getDayOfWeek().getValue());//4
	//月份
System.out.println(nowDateTime.getMonth());//SEPTEMBER
System.out.println(nowDateTime.getMonth().getValue());//9

二、獲取指定時間
(1)LocalDate

System.out.println(LocalDate.of(1991, 11, 11));//直接傳入對應的年月日
System.out.println(LocalDate.of(1991, Month.NOVEMBER, 11));//相對上面只是把月換成了枚舉
LocalDate birDay = LocalDate.of(1991, 11, 11);
System.out.println(LocalDate.ofYearDay(1991, birDay.getDayOfYear()));//第一個參數爲年,第二個參數爲當年的第多少天
System.out.println(LocalDate.ofEpochDay(birDay.toEpochDay()));//參數爲距離1970-01-01的天數
System.out.println(LocalDate.parse("1991-11-11"));
System.out.println(LocalDate.parse("19911111",DateTimeFormatter.ofPattern("yyyyMMdd")));

(2)LocalTime

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);
System.out.println(LocalTime.ofSecondOfDay(mTime.toSecondOfDay()));//參數爲距離當天零時的秒數
System.out.println(LocalTime.ofNanoOfDay(mTime.toNanoOfDay()));//參數爲距離當天零時的納秒數
System.out.println(LocalTime.parse("08:20:30"));
System.out.println(LocalTime.parse("082030", DateTimeFormatter.ofPattern("HHmmss")));

(3)LocalDateTime
這裏的 birDay 和 mTime 複用上面的變量。

System.out.println(LocalDateTime.of(birDay, mTime));//參數爲LocalDate和LocalTime
System.out.println(LocalDateTime.of(1991, 11, 11, 8, 20));
System.out.println(LocalDateTime.of(1991, Month.NOVEMBER, 11, 8, 20));
System.out.println(LocalDateTime.of(1991, 11, 11, 8, 20, 30));
System.out.println(LocalDateTime.of(1991, Month.NOVEMBER, 11, 8, 20, 30));
System.out.println(LocalDateTime.of(1991, 11, 11, 8, 20, 30, 150));
System.out.println(LocalDateTime.of(1991, Month.NOVEMBER, 11, 8, 20, 30, 150));
System.out.println(LocalDateTime.parse("1991-11-11T08:20:30"));
System.out.println(LocalDateTime.parse("1991-11-11 08:20:30", DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss")));

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章