java8 時間

– Instant——它代表的是時間戳
– LocalDate——不包含具體時間的日期,比如2014-01-14。它可以用來存儲生日,週年紀念日,入職日期等。
– LocalTime——它代表的是不含日期的時間
– LocalDateTime——它包含了日期及時間,不過還是沒有偏移信息或者說時區。
– ZonedDateTime——這是一個包含時區的完整的日期時間,偏移量是以UTC/格林威治時間爲基準的。



// 取當前日期:
LocalDate today = LocalDate.now(); // -> 2016-05-14
// 根據年月日取日期,12月就是12:
LocalDate crischristmas = LocalDate.of(2016, 12, 25); // -> 2016-12-25
// 根據字符串取:
LocalDate endOfFeb = LocalDate.parse("2016-02-28"); // 嚴格按照ISO yyyy-MM-dd驗證,02寫成2都不行,當然也有一個重載方法允許自己定義格式
LocalDate.parse("2016-02-29"); // 無效日期無法通過:DateTimeParseException: Invalid date


日期轉換經常遇到,比如:
// 取本月第1天:
LocalDate firstDayOfThisMonth = today.with(TemporalAdjusters.firstDayOfMonth()); // 2016-12-01
// 取本月第2天:
LocalDate secondDayOfThisMonth = today.withDayOfMonth(2); // 2016-12-02
// 取本月最後一天,再也不用計算是28,29,30還是31:
LocalDate lastDayOfThisMonth = today.with(TemporalAdjusters.lastDayOfMonth()); // 2016-12-31
// 取下一天:
LocalDate firstDayOf2015 = lastDayOfThisMonth.plusDays(1); // 變成了2016-01-01
// 取2016年1月第一個週一,這個計算用Calendar要死掉很多腦細胞:
LocalDate firstMondayOf2015 = LocalDate.parse("2015-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY)); // 2015-01-05
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章