import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.util.Date; public static void main(String[] args) { // LocalDateTime轉字符串(true) DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime localDateTime = LocalDateTime.now(); System.out.println("LocalDateTime轉字符串:" + localDateTime.format(formatter)); // 將時間字符串轉自定義格式的LocalDateTime String timeString = "2020-10-22 15:22:54"; DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); LocalDateTime parse = LocalDateTime.parse(timeString, dateTimeFormatter); System.out.println("字符串轉LocalDateTime:" + parse.format(dateTimeFormatter)); // 時間戳轉LocalDateTime(true) long time = new Date().getTime(); System.out.println("java時間戳:" + time); DateTimeFormatter dateTimeFormatter3 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); Instant instant = Instant.ofEpochMilli(time); ZoneId zoneId = ZoneId.systemDefault(); LocalDateTime localDateTime1 = LocalDateTime.ofInstant(instant, zoneId); System.out.println("時間戳轉LocalDateTime:" + localDateTime1.format(dateTimeFormatter3)); // LocalDateTime轉時間戳(true) LocalDateTime localDateTime2 = LocalDateTime.now(); ZoneId zoneId1 = ZoneId.systemDefault(); Instant instant1 = localDateTime2.atZone(zoneId1).toInstant(); System.out.println("LocalDateTime轉時間戳:" + instant1.toEpochMilli()); // LocalDate轉字符串 DateTimeFormatter formatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDate localDate = LocalDate.now(); System.out.println("LocalDate轉字符串:" + localDate.format(formatter1)); // 將時間字符串轉自定義格式的LocalDate String timeString2 = "2020-10-22"; DateTimeFormatter dateTimeFormatter1 = DateTimeFormatter.ofPattern("yyyy-MM-dd"); System.out.println("字符串轉LocalDate:" + LocalDate.parse(timeString2, dateTimeFormatter1)); // 時間戳轉LocalDate long time1 = new Date().getTime(); System.out.println("java時間戳:" + time1); Instant instant2 = Instant.ofEpochMilli(time1); ZoneId zoneId2 = ZoneId.systemDefault(); System.out.println("時間戳轉LocalDate:" + instant2.atZone(zoneId2).toLocalDate()); // LocalDate轉時間戳 LocalDate localDate2 = LocalDate.now(); ZoneId zoneId3 = ZoneId.systemDefault(); System.out.println("LocalDate轉時間戳:" + localDate2.atStartOfDay(zoneId3).toInstant().toEpochMilli());
// LocalDate之間相差幾天
LocalDate.toEpochDay() - LocalDate.toEpochDay() = 1 ; 表明:一個是1號 一個是2
// LocalDateTime轉LocalDate DateTimeFormatter dateTimeFormatter2 = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); DateTimeFormatter dateTimeFormatter4 = DateTimeFormatter.ofPattern("yyyy-MM-dd"); LocalDateTime localDateTime3 = LocalDateTime.now(); System.out.println("LocalDateTime轉LocalDate:"+localDateTime3.format(dateTimeFormatter2)); LocalDate localDate1 = localDateTime3.toLocalDate(); System.out.println("LocalDateTime轉LocalDate:"+localDate1.format(dateTimeFormatter4));
LocalDate today = LocalDate.now(); // LocalDate 算本周開始日期和本周結束日期 LocalDate monday = today.with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY)); LocalDate sunday = today.with(TemporalAdjusters.nextOrSame(DayOfWeek.SUNDAY)); // 算本月開始和結束日期 LocalDate firstDay = today.with(TemporalAdjusters.firstDayOfMonth()); LocalDate endDay = today.with(TemporalAdjusters.lastDayOfMonth());
}