推荐: https://yq.aliyun.com/articles/256854?spm=a2c4e.11153940.0.0.6a255562myIiAj --- date time api
Clock Clock提供访问当前日期和时间。Clock是对当前时区敏感的,可以用来代替System.currentTimeMillis()来获取当前的毫秒值。当前时间线上的时刻可以用Instance类来表示。Instance可以用来创建java.util.Date格式的对象。 Clock clock = Clock.systemDefaultZone(); long millis = clock.millis(); Instant instant = clock.instant(); Date legacyDate = Date.from(instant); // legacy java.util.Date
LocalTime LocalTime代表没有时区的时间,例如晚上10点或17:30:15。下面的例子会用上面的例子定义的时区创建两个本地时间对象。然后我们比较两个时间并计算小时和分钟的差异。 LocalTime now1 = LocalTime.now(zone1); LocalTime now2 = LocalTime.now(zone2); System.out.println(now1.isBefore(now2)); // false long hoursBetween = ChronoUnit.HOURS.between(now1, now2); long minutesBetween = ChronoUnit.MINUTES.between(now1, now2); System.out.println(hoursBetween); // -3 System.out.println(minutesBetween); // -239
LocalDate LocalDate代表一个唯一的日期,如2014-03-11。它是不可变的,完全模拟本地时间工作。此示例演示如何通过添加或减去天数,月数,年来计算新的日期。记住每一个操作都会返回一个新的实例。 LocalDate today = LocalDate.now(); LocalDate tomorrow = today.plus(1, ChronoUnit.DAYS); LocalDate yesterday = tomorrow.minusDays(2); LocalDate independenceDay = LocalDate.of(2014, Month.JULY, 4); DayOfWeek dayOfWeek = independenceDay.getDayOfWeek(); System.out.println(dayOfWeek); // FRIDAY
将字符串解析为LocalDate: DateTimeFormatter germanFormatter = DateTimeFormatter .ofLocalizedDate(FormatStyle.MEDIUM) .withLocale(Locale.GERMAN); LocalDate xmas = LocalDate.parse("24.12.2014", germanFormatter); System.out.println(xmas); // 2014-12-24
LocalDateTime LocalDateTime代表日期时间。它结合了日期和时间见上面的部分为一个实例。LocalDateTime是不可变的,类似于本地时间和LocalDate工作。我们可以从一个日期时间获取某些字段的方法: LocalDateTime sylvester = LocalDateTime.of(2014, Month.DECEMBER, 31, 23, 59, 59); DayOfWeek dayOfWeek = sylvester.getDayOfWeek(); System.out.println(dayOfWeek); // WEDNESDAY Month month = sylvester.getMonth(); System.out.println(month); // DECEMBER long minuteOfDay = sylvester.getLong(ChronoField.MINUTE_OF_DAY); System.out.println(minuteOfDay); // 1439
随着一个时区可以转换为一个即时的附加信息。Instance可以被转换为日期型转化为指定格式的java.util.Date。 Instant instant = sylvester .atZone(ZoneId.systemDefault()) .toInstant(); Date legacyDate = Date.from(instant); System.out.println(legacyDate); // Wed Dec 31 23:59:59 CET 2014
格式日期时间对象就像格式化日期对象或者格式化时间对象,除了使用预定义的格式以外,我们还可以创建自定义的格式化对象,然后匹配我们自定义的格式。 DateTimeFormatter formatter = DateTimeFormatter .ofPattern("MMM dd, yyyy - HH:mm"); LocalDateTime parsed = LocalDateTime.parse("Nov 03, 2014 - 07:13", formatter); String string = formatter.format(parsed); System.out.println(string); // Nov 03, 2014 - 07:13 不像java.text.NumberFormat,新的DateTimeFormatter是不可变的,线程安全的。
https://yq.aliyun.com/articles/17036?spm=a2c4e.11153940.0.0.6a255562myIiAj