創建
LocalDate localDate = LocalDate.now(); // 2018-11-22
LocalTime localTime = LocalTime.of(2, 20, 30); // 02:20:30
LocalDateTime localDateTime = LocalDateTime.of(localDate, localTime); // 2018-11-22T02:20:30
LocalDateTime localDateTime1 = localDate.atStartOfDay(); // 2018-11-22T00:00
LocalDateTime localDateTime2 = localDate.atTime(20, 12, 59); // 2018-11-22T20:12:59
LocalDateTime localDateTime3 = localTime.atDate(localDate); // 2018-11-22T02:20:30
LocalDateTime dateTime = LocalDateTime.parse("2020-10-10 02:30:05",
DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
System.out.println(dateTime); // 2020-10-10T02:30:05
System.out.println(dateTime.toLocalDate()); // 2020-10-10
System.out.println(dateTime.toLocalTime()); // 02:30:05
獲取
LocalDateTime date = LocalDateTime.now(); // 2018-11-22T18:27:46.349
int year = date.getYear(); // 2018
int monthValue = date.getMonthValue(); // 11
Month month = date.getMonth(); // NOVEMBER
int dayOfMonth = date.getDayOfMonth(); // 22
int hour = date.getHour(); // 18
int minute = date.getMinute(); // 27
int second = date.getSecond(); // 46
int nano = date.getNano(); // 349000000
int dayOfYear = date.getDayOfYear(); // 326
DayOfWeek dayOfWeek = date.getDayOfWeek(); // THURSDAY
LocalDate localDate = date.toLocalDate(); // 2018-11-22
int lengthOfYear = localDate.lengthOfYear();// 365
int lengthOfMonth = localDate.lengthOfMonth();// 30
boolean leapYear = localDate.isLeapYear(); // false
int i = localDate.get(ChronoField.DAY_OF_MONTH); // 22
int i1 = date.get(ChronoField.HOUR_OF_DAY); // 18
修改
// 8012-11-15T22:40
LocalDateTime time = LocalDateTime.of(8012, Month.NOVEMBER, 15, 22, 40);
LocalDateTime time1 = time.withYear(2018)
.withMonth(Month.OCTOBER.getValue())
.withDayOfMonth(1)
.withHour(5)
.withMinute(0)
.withSecond(5); // 2018-10-01T05:00:05
LocalDateTime time2 = time1.plusYears(10)
.minusMonths(1)
.plusDays(1)
.minusHours(1)
.plusMinutes(1)
.minusSeconds(1); // 2028-09-02T04:01:04
LocalDate localDate = LocalDate.of(2018, 11, 2); // 2018-11-02
LocalDate date = localDate.with(TemporalAdjusters.firstDayOfMonth()); // 2018-11-01 本月第一天
LocalDate date1 = localDate.with(TemporalAdjusters.firstDayOfNextMonth()); // 2018-12-01 下月第一天
LocalDate date2 = localDate.with(TemporalAdjusters.firstDayOfNextYear()); // 2019-01-01 下年第一天
LocalDate date3 = localDate.with(TemporalAdjusters.lastDayOfMonth()); // 2018-11-30 本月最後天
LocalDate date4 = localDate.with(TemporalAdjusters.lastInMonth(DayOfWeek.SUNDAY)); // 2018-11-25 當月最後週日
LocalDate date5 = localDate.with(TemporalAdjusters.dayOfWeekInMonth(1,DayOfWeek.SATURDAY)); // 2018-11-03 當月第一週六
LocalDate date6 = localDate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)); // 2018-11-04 下個週日
格式化輸出
LocalDateTime time = LocalDateTime.of(2018, 12, 1, 10, 20, 30);
String s1 = time.format(DateTimeFormatter.ISO_DATE_TIME); // 2018-12-01T10:20:30
String s2 = time.format(DateTimeFormatter.BASIC_ISO_DATE); // 20181201
String s3 = time.format(DateTimeFormatter.ofPattern("yyyy MM dd -- HH:mm:ssS"));// 2018 12 01 -- 10:20:300
DateTimeFormatter myFormatter = new DateTimeFormatterBuilder()
.appendText(ChronoField.YEAR)
.appendLiteral("年")
.appendText(ChronoField.MONTH_OF_YEAR)
.appendText(ChronoField.DAY_OF_MONTH)
.appendLiteral("日 第")
.appendText(ChronoField.DAY_OF_YEAR)
.appendLiteral("天|")
.appendText(ChronoField.DAY_OF_WEEK)
.appendLiteral(" ")
.parseCaseInsensitive()
.toFormatter(Locale.CHINA);
String s4 = time.format(myFormatter); // 2018年十二月1日 第335天|星期六
時區
LocalDateTime time = LocalDateTime.now();
ZonedDateTime shanghai = time.atZone(ZoneId.of("Asia/Shanghai"));
ZonedDateTime Anchorage = time.atZone(ZoneId.of("America/Anchorage"));
System.out.println(shanghai); // 2018-11-22T20:36:47.733+08:00[Asia/Shanghai]
System.out.println(Anchorage); // 2018-11-22T20:36:47.733-09:00[America/Anchorage]
ZoneOffset offset = ZoneOffset.of("-01:00");
OffsetDateTime offsetDateTime = OffsetDateTime.of(time, offset);
System.out.println(offsetDateTime); // 2018-11-22T20:36:47.733-01:00