Java8 дата и время операции
1. Введение
До Java 8 разработчики критиковали API даты и времени, в том числе: java.util.Date - тип переменной, SimpleDateFormat - не поточно-ориентированный и другие проблемы. Поэтому Java8 представила новый набор API обработки даты и времени, новый API основан на стандартной календарной системе ISO.
Во-вторых, дата
Пример 1: Получить сегодняшнюю дату
LocalDate в Java 8 используется для представления сегодняшней даты. В отличие от java.util.Date, у него есть только дата и нет времени.
public static void main (String [] args) { LocalDate date = LocalDate.now (); System.out.println ("当前 日期 =" + дата); }
Пример 2: Построить указанную дату
Вызовите фабричный метод LocalDate.of () для создания любой даты. Этот метод должен передать год, месяц и день в качестве параметров и вернуть соответствующий экземпляр LocalDate. Преимущество этого метода состоит в том, что больше нет ошибок проектирования старого API, например, год начинается в 1900 году, месяц начинается с 0
public static void main (String [] args) { LocalDate date = LocalDate.of (2000, 1, 1); System.out.println ("千禧 年 =" + дата); }
Пример 3: Получить информацию о году, месяце и дне
public static void main (String [] args) { LocalDate date = LocalDate.now (); System.out.printf ("年 =% d , 月 =% d , 日 =% d", date.getYear (), date.getMonthValue (), date.getDayOfMonth ()); }
Пример 4: Сравните две даты на равенство
public static void main (String [] args) { LocalDate now = LocalDate.now (); Дата LocalDate = LocalDate.of (2018, 9, 24); System.out.println ("日期 是否 相等 =" + now.equals (date)); }
3. Время знать
Пример: получить текущее время
LocalTime в Java 8 используется для указания времени суток. В отличие от java.util.Date, у него есть только время и дата.
public static void main (String [] args) { LocalTime time = LocalTime.now (); System.out.println ("当前 时间 =" + время); }
В-четвертых, сравнение и расчет
Пример 1: расчет даты и времени
Java8 предоставляет новый метод plusXxx () для вычисления значения приращения даты и времени, заменяя оригинальный метод add (). Новый API вернет совершенно новый пример даты и времени, который должен быть получен с новым объектом.
public static void main (String [] args) {
// 增量 增量 LocalTime time = LocalTime.now (); LocalTime newTime = time.plusHours (2); System.out.println ("newTime =" + newTime); // 增量 增量 LocalDate date = LocalDate.now (); LocalDate newDate = date.plus (1, ChronoUnit.WEEKS); System.out.println ("newDate =" + newDate); }
Пример 2: Сравнение даты и времени
Java8 предоставляет isAfter () и isBefore () для оценки сравнения между текущей датой и временем и указанной датой и временем
public static void main (String [] args) { LocalDate now = LocalDate.now (); LocalDate date1 = LocalDate.of (2000, 1, 1); if (now.isAfter (date1)) { System.out.println ( « Миллениум прошел»); } LocalDate date2 = LocalDate.of (2020, 1, 1); if (now.isBefore (date2)) { System.out.println («2020 еще не наступил»); } }
V. Часовой пояс
Пример: создание даты и времени с часовым поясом
Java 8 разделяет не только дату и время, но и часовой пояс. Теперь существует ряд отдельных классов, таких как ZoneId для работы с конкретным часовым поясом и класс ZoneDateTime для представления времени в определенном часовом поясе.
public static void main (String [] args) { // 上海 时间 ZoneId shanghaiZoneId = ZoneId.of ("Азия / Шанхай"); ZonedDateTime shanghaiZonedDateTime = ZonedDateTime.now (shanghaiZoneId); // 时间 时间 ZoneId tokyoZoneId = ZoneId.of ("Азия / Токио"); ZonedDateTime tokyoZonedDateTime = ZonedDateTime.now (tokyoZoneId); DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("гггг-мм-дд ЧЧ: мм: сс"); System.out.println ("上海 时间:" + shanghaiZonedDateTime.format (formatter)); System.out.println ("东京 时间:" + tokyoZonedDateTime.format (formatter)); }
Шесть, формат
Пример 1. Разбор и форматирование дат с использованием предопределенных форматов.
public static void main (String [] args) { // Анализ даты String dateText = "20180924"; LocalDate date = LocalDate.parse (dateText, DateTimeFormatter.BASIC_ISO_DATE); System.out.println ("Дата после формата =" + date); // формат даты dateText = date.format (DateTimeFormatter.ISO_DATE); System.out.println ("dateText =" + dateText); }
Пример 2: преобразование даты и строки
public static void main (String [] args) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("гггг-ММ-дд ЧЧ: мм: сс"); // 字符串 时间 转 字符串 LocalDateTime now = LocalDateTime.now (); String nowText = now.format (formatter); System.out.println ("nowText =" + nowText); // 字符串 转 日期 时间 String datetimeText = "1999-12-31 23:59:59"; LocalDateTime datetime = LocalDateTime.parse (datetimeText, форматтер); System.out.println (DateTime); }
Семь, родственное описание
Мгновенная отметка времени Длительность Продолжительность, разница во времени LocalDate содержит только дату, например: 2018-09-24 LocalTime содержит только время, например: 10:32:10 LocalDateTime содержит дату и время, например: 2018-09-24 10:32:10 Периодический часовой пояс ZoneOffset смещение часового пояса, например: +8: 00 ZonedDateTime date time Часы с часовым поясом , могут использоваться для получения текущей метки времени java.time.format.DateTimeFormatter класс форматирования времени
1. Введение
До Java 8 разработчики критиковали API даты и времени, в том числе: java.util.Date - тип переменной, SimpleDateFormat - не поточно-ориентированный и другие проблемы. Поэтому Java8 представила новый набор API обработки даты и времени, новый API основан на стандартной календарной системе ISO.
Во-вторых, дата
Пример 1: Получить сегодняшнюю дату
LocalDate в Java 8 используется для представления сегодняшней даты. В отличие от java.util.Date, у него есть только дата и нет времени.
public static void main (String [] args) { LocalDate date = LocalDate.now (); System.out.println ("当前 日期 =" + дата); }
Пример 2: Построить указанную дату
Вызовите фабричный метод LocalDate.of () для создания любой даты. Этот метод должен передать год, месяц и день в качестве параметров и вернуть соответствующий экземпляр LocalDate. Преимущество этого метода состоит в том, что больше нет ошибок проектирования старого API, например, год начинается в 1900 году, месяц начинается с 0
public static void main (String [] args) { LocalDate date = LocalDate.of (2000, 1, 1); System.out.println ("千禧 年 =" + дата); }
Пример 3: Получить информацию о году, месяце и дне
public static void main (String [] args) { LocalDate date = LocalDate.now (); System.out.printf ("年 =% d , 月 =% d , 日 =% d", date.getYear (), date.getMonthValue (), date.getDayOfMonth ()); }
Пример 4: Сравните две даты на равенство
public static void main (String [] args) { LocalDate now = LocalDate.now (); Дата LocalDate = LocalDate.of (2018, 9, 24); System.out.println ("日期 是否 相等 =" + now.equals (date)); }
3. Время знать
Пример: получить текущее время
LocalTime в Java 8 используется для указания времени суток. В отличие от java.util.Date, у него есть только время и дата.
public static void main (String [] args) { LocalTime time = LocalTime.now (); System.out.println ("当前 时间 =" + время); }
В-четвертых, сравнение и расчет
Пример 1: расчет даты и времени
Java8 предоставляет новый метод plusXxx () для вычисления значения приращения даты и времени, заменяя оригинальный метод add (). Новый API вернет совершенно новый пример даты и времени, который должен быть получен с новым объектом.
public static void main (String [] args) {
// 增量 增量 LocalTime time = LocalTime.now (); LocalTime newTime = time.plusHours (2); System.out.println ("newTime =" + newTime); // 增量 增量 LocalDate date = LocalDate.now (); LocalDate newDate = date.plus (1, ChronoUnit.WEEKS); System.out.println ("newDate =" + newDate); }
Пример 2: Сравнение даты и времени
Java8 предоставляет isAfter () и isBefore () для оценки сравнения между текущей датой и временем и указанной датой и временем
public static void main (String [] args) { LocalDate now = LocalDate.now (); LocalDate date1 = LocalDate.of (2000, 1, 1); if (now.isAfter (date1)) { System.out.println ( « Миллениум прошел»); } LocalDate date2 = LocalDate.of (2020, 1, 1); if (now.isBefore (date2)) { System.out.println («2020 еще не наступил»); } }
V. Часовой пояс
Пример: создание даты и времени с часовым поясом
Java 8 разделяет не только дату и время, но и часовой пояс. Теперь существует ряд отдельных классов, таких как ZoneId для работы с конкретным часовым поясом и класс ZoneDateTime для представления времени в определенном часовом поясе.
public static void main (String [] args) { // 上海 时间 ZoneId shanghaiZoneId = ZoneId.of ("Азия / Шанхай"); ZonedDateTime shanghaiZonedDateTime = ZonedDateTime.now (shanghaiZoneId); // 时间 时间 ZoneId tokyoZoneId = ZoneId.of ("Азия / Токио"); ZonedDateTime tokyoZonedDateTime = ZonedDateTime.now (tokyoZoneId); DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("гггг-мм-дд ЧЧ: мм: сс"); System.out.println ("上海 时间:" + shanghaiZonedDateTime.format (formatter)); System.out.println ("东京 时间:" + tokyoZonedDateTime.format (formatter)); }
Шесть, формат
Пример 1. Разбор и форматирование дат с использованием предопределенных форматов.
public static void main (String [] args) { // Анализ даты String dateText = "20180924"; LocalDate date = LocalDate.parse (dateText, DateTimeFormatter.BASIC_ISO_DATE); System.out.println ("Дата после формата =" + date); // формат даты dateText = date.format (DateTimeFormatter.ISO_DATE); System.out.println ("dateText =" + dateText); }
Пример 2: преобразование даты и строки
public static void main (String [] args) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("гггг-ММ-дд ЧЧ: мм: сс"); // 字符串 时间 转 字符串 LocalDateTime now = LocalDateTime.now (); String nowText = now.format (formatter); System.out.println ("nowText =" + nowText); // 字符串 转 日期 时间 String datetimeText = "1999-12-31 23:59:59"; LocalDateTime datetime = LocalDateTime.parse (datetimeText, форматтер); System.out.println (DateTime); }
Семь, родственное описание
Мгновенная отметка времени Длительность Продолжительность, разница во времени LocalDate содержит только дату, например: 2018-09-24 LocalTime содержит только время, например: 10:32:10 LocalDateTime содержит дату и время, например: 2018-09-24 10:32:10 Периодический часовой пояс ZoneOffset смещение часового пояса, например: +8: 00 ZonedDateTime date time Часы с часовым поясом , могут использоваться для получения текущей метки времени java.time.format.DateTimeFormatter класс форматирования времени