LocalDateTime用法大全

常規使用

LocalDateTime now = LocalDateTime.now();   // 2020-01-29T14:35:51.207
int year = now.getYear();                  // 2020
Month month = now.getMonth();              // JANUARY
int monthValue = now.getMonthValue();      // 1
int dayOfYear = now.getDayOfYear();        // 29
int dayOfMonth = now.getDayOfMonth();      // 29
DayOfWeek dayOfWeek = now.getDayOfWeek();  // WEDNESDAY
int dayOfWeekValue = dayOfWeek.getValue(); // 3
int hour = now.getHour();                  // 14
int minute = now.getMinute();              // 35
int second = now.getSecond();              // 51

long second = LocalDateTime.now().toEpochSecond(ZoneOffset.ofHours(8));                 // 秒
long milliSecond = LocalDateTime.now().toInstant(ZoneOffset.ofHours(8)).toEpochMilli(); // 毫秒
LocalDateTime dateTimeFromSecond = LocalDateTime.ofInstant(Instant.ofEpochSecond(second), ZoneOffset.ofHours(8));  // 秒轉datetime
LocalDateTime dateTimeFromMilliSecond = LocalDateTime.ofInstant(Instant.ofEpochMilli(milliSecond), ZoneOffset.ofHours(8)); // 毫秒轉datetime

各種轉換

String format = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));            // datetime轉字符串
LocalDateTime dateTime = LocalDateTime.parse(format, DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));  // 字符串轉datetime

Date date = Date.from(localDateTime.toInstant(ZoneOffset.ofHours(8)));                                     // datetime轉date
LocalDateTime dateTimeFromDate = date.toInstant().atOffset(ZoneOffset.ofHours(8)).toLocalDateTime();       // date轉datetime

自定義日期 / 日期加減

LocalDateTime dateTime = LocalDateTime.of(2020, 1, 29, 14, 35, 51); // 2020-01-29T14:35:51

LocalDateTime localDateTime1 = dateTime.minusSeconds(1);            // 2020-01-29T14:35:50
LocalDateTime localDateTime2 = dateTime.minusMinutes(1);            // 2020-01-29T14:34:51
LocalDateTime localDateTime3 = dateTime.minusHours(1);              // 2020-01-29T13:35:51
LocalDateTime localDateTime4 = dateTime.minusDays(1);               // 2020-01-28T14:35:51
LocalDateTime localDateTime5 = dateTime.minusWeeks(1);              // 2020-01-22T14:35:51
LocalDateTime localDateTime6 = dateTime.minusMonths(1);             // 2019-12-29T14:35:51
LocalDateTime localDateTime7 = dateTime.minusYears(1);              // 2019-01-29T14:35:51

增加的爲對應的plus函數,如dateTime.plusSeconds(1)

比較日期

LocalDateTime now = LocalDateTime.now();
LocalDateTime yesterday = LocalDateTime.now().minusDays(1);
boolean after = now.isAfter(yesterday);   // true
boolean before = now.isBefore(yesterday); // false
boolean equal = now.isEqual(yesterday);   // false

其他類

LocalDate日期

LocalDate dateNow = LocalDate.now();
LocalDate date = LocalDate.of(2020, 1, 29);

LocalTime時間

LocalTime timeNow = LocalTime.now();
LocalTime time = LocalTime.of(23, 59, 59);

LocalDateTime日期時間

LocalDateTime dateTimeNow = LocalDateTime.now();
LocalDateTime dateTime = LocalDateTime.of(2020, 1, 29, 23, 59, 59);

Instant時刻

long milliSecond = Instant.now().toEpochMilli(); // 毫秒時間戳
Instant instant1 = Instant.ofEpochSecond(milliSecond / 1000);
Instant instant2 = Instant.ofEpochMilli(milliSecond);
System.out.println(instant1);
System.out.println(instant2);

Duration時間差

Duration duration = Duration.between(LocalDateTime.now(), LocalDateTime.now().plusDays(1));
long seconds = duration.getSeconds();
long seconds2 = duration.get(ChronoUnit.SECONDS);

Duration ofDays = Duration.ofDays(1);
Duration ofHours = Duration.ofHours(1);
Duration ofMinutes = Duration.ofMinutes(1);
Duration ofSeconds = Duration.ofSeconds(1);

Period時間段

Period between = Period.between(LocalDate.of(2020, 1, 22), LocalDate.of(2020, 2, 9));
int years = between.getYears();
int months = between.getMonths();
int days = between.getDays();

Period period = Period.of(1, 2, 3);
long years = period.get(ChronoUnit.YEARS);
long months = period.get(ChronoUnit.MONTHS);
long days = period.get(ChronoUnit.DAYS);

Clock時鐘

Clock clock1 = Clock.system(ZoneOffset.ofHours(8));
Clock clock2 = Clock.systemUTC();

long millis1 = clock1.millis();
long millis2 = clock2.millis();
LocalDateTime localDateTime1 = clock1.instant().atZone(ZoneOffset.ofHours(8)).toLocalDateTime();
LocalDateTime localDateTime2 = clock2.instant().atZone(ZoneOffset.ofHours(8)).toLocalDateTime();
發佈了83 篇原創文章 · 獲贊 361 · 訪問量 125萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章