Operación de fecha y hora Java8
1. Introducción
Antes de Java 8, los desarrolladores criticaban la API de fecha y hora, incluidos: java.util.Date es un tipo variable, SimpleDateFormat no es seguro para subprocesos y otros problemas. Por lo tanto, Java8 introdujo un nuevo conjunto de API de procesamiento de fecha y hora, la nueva API se basa en el sistema de calendario estándar ISO.
Segundo, la fecha
Ejemplo 1: Obtenga la fecha de hoy
LocalDate en Java 8 se utiliza para representar la fecha de hoy. A diferencia de java.util.Date, solo tiene una fecha y no tiene hora.
public static void main (String [] args) { LocalDate date = LocalDate.now (); System.out.println ("当前 日期 =" + fecha); }
Ejemplo 2: construir la fecha especificada
Llame al método de fábrica LocalDate.of () para crear cualquier fecha. Este método debe pasar el año, mes y día como parámetros y devolver la instancia de LocalDate correspondiente. La ventaja de este método es que no hay más errores de diseño de la antigua API, como el año comienza en 1900, el mes comienza en 0, etc.
public static void main (String [] args) { LocalDate date = LocalDate.of (2000, 1, 1); System.out.println ("千禧 年 =" + fecha); }
Ejemplo 3: obtener información de año, mes y día
public static void main (String [] args) { LocalDate date = LocalDate.now (); System.out.printf ("年 =% d , 月 =% d , 日 =% d", date.getYear (), date.getMonthValue (), date.getDayOfMonth ()); }
Ejemplo 4: Compara dos fechas para la igualdad
public static void main (String [] args) { LocalDate now = LocalDate.now (); Fecha LocalDate = LocalDate.of (2018, 9, 24); System.out.println ("日期 是否 相等 =" + now.equals (fecha)); }
3. Hora de saber
Ejemplo: obtener la hora actual
LocalTime en Java 8 se utiliza para indicar la hora del día. A diferencia de java.util.Date, solo tiene tiempo y no tiene fecha.
public static void main (String [] args) { LocalTime time = LocalTime.now (); System.out.println ("当前 时间 =" + tiempo); }
Cuarto, comparación y cálculo.
Ejemplo 1: cálculo de fecha y hora
Java8 proporciona un nuevo método plusXxx () para calcular el valor de incremento de fecha y hora, reemplazando el método add () original. La nueva API devolverá un nuevo ejemplo de fecha y hora que debe recibirse con un nuevo objeto.
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); }
Ejemplo 2: comparación de fecha y hora
Java8 proporciona isAfter () y isBefore () para juzgar la comparación entre la fecha y hora actuales y la fecha y hora especificadas
public static void main (String [] args) { LocalDate now = LocalDate.now (); LocalDate date1 = LocalDate.of (2000, 1, 1); if (now.isAfter (date1)) { System.out.println ( "El milenio ha pasado"); } LocalDate date2 = LocalDate.of (2020, 1, 1); if (now.isBefore (date2)) { System.out.println ("2020 aún no ha llegado"); } }
V. Zona horaria
Ejemplo: crear una fecha y hora con zona horaria
Java 8 no solo separa la fecha y la hora, sino también la zona horaria. Ahora hay una serie de clases separadas como ZoneId para tratar con una zona horaria específica y la clase ZoneDateTime para representar la hora en una zona horaria determinada.
public static void main (String [] args) { // 上海 时间 ZoneId shanghaiZoneId = ZoneId.of ("Asia / Shanghai"); ZonedDateTime shanghaiZonedDateTime = ZonedDateTime.now (shanghaiZoneId); // 东京 时间 ZoneId tokyoZoneId = ZoneId.of ("Asia / Tokio"); ZonedDateTime tokyoZonedDateTime = ZonedDateTime.now (tokyoZoneId); DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("aaaa-MM-dd HH: mm: ss"); System.out.println ("上海 时间:" + shanghaiZonedDateTime.format (formateador)); System.out.println ("东京 时间:" + tokyoZonedDateTime.format (formateador)); }
Seis, formato
Ejemplo 1: analizar y formatear fechas usando formatos predefinidos
public static void main (String [] args) { // Parse date String dateText = "20180924"; LocalDate date = LocalDate.parse (dateText, DateTimeFormatter.BASIC_ISO_DATE); System.out.println ("Fecha después del formato =" + date); // format date dateText = date.format (DateTimeFormatter.ISO_DATE); System.out.println ("dateText =" + dateText); }
Ejemplo 2: conversión entre fecha y cadena
public static void main (String [] args) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("aaaa-MM-dd HH: mm: ss"); // 日期 时间 转 字符串 LocalDateTime now = LocalDateTime.now (); Cadena nowText = now.format (formateador); System.out.println ("nowText =" + nowText); // 字符串 转 日期 时间 String datetimeText = "1999-12-31 23:59:59"; LocalDateTime datetime = LocalDateTime.parse (datetimeText, formatter); System.out.println (fecha y hora); }
Seven, descripción relacionada
Marca de tiempo instantánea Duración Duración, diferencia horaria LocalDate solo contiene la fecha, por ejemplo: 2018-09-24 LocalTime solo contiene la hora, por ejemplo: 10:32:10 LocalDateTime contiene la fecha y hora, por ejemplo: 2018-09-24 10:32:10 Zona horaria de peroides ZoneOffset offset de zona horaria, por ejemplo: +8: 00 ZonedDateTime date time Clock clock con zona horaria , se puede utilizar para obtener la marca de hora actual java.time.format.DateTimeFormatter clase de formato de hora
1. Introducción
Antes de Java 8, los desarrolladores criticaban la API de fecha y hora, incluidos: java.util.Date es un tipo variable, SimpleDateFormat no es seguro para subprocesos y otros problemas. Por lo tanto, Java8 introdujo un nuevo conjunto de API de procesamiento de fecha y hora, la nueva API se basa en el sistema de calendario estándar ISO.
Segundo, la fecha
Ejemplo 1: Obtenga la fecha de hoy
LocalDate en Java 8 se utiliza para representar la fecha de hoy. A diferencia de java.util.Date, solo tiene una fecha y no tiene hora.
public static void main (String [] args) { LocalDate date = LocalDate.now (); System.out.println ("当前 日期 =" + fecha); }
Ejemplo 2: construir la fecha especificada
Llame al método de fábrica LocalDate.of () para crear cualquier fecha. Este método debe pasar el año, mes y día como parámetros y devolver la instancia de LocalDate correspondiente. La ventaja de este método es que no hay más errores de diseño de la antigua API, como el año comienza en 1900, el mes comienza en 0, etc.
public static void main (String [] args) { LocalDate date = LocalDate.of (2000, 1, 1); System.out.println ("千禧 年 =" + fecha); }
Ejemplo 3: obtener información de año, mes y día
public static void main (String [] args) { LocalDate date = LocalDate.now (); System.out.printf ("年 =% d , 月 =% d , 日 =% d", date.getYear (), date.getMonthValue (), date.getDayOfMonth ()); }
Ejemplo 4: Compara dos fechas para la igualdad
public static void main (String [] args) { LocalDate now = LocalDate.now (); Fecha LocalDate = LocalDate.of (2018, 9, 24); System.out.println ("日期 是否 相等 =" + now.equals (fecha)); }
3. Hora de saber
Ejemplo: obtener la hora actual
LocalTime en Java 8 se utiliza para indicar la hora del día. A diferencia de java.util.Date, solo tiene tiempo y no tiene fecha.
public static void main (String [] args) { LocalTime time = LocalTime.now (); System.out.println ("当前 时间 =" + tiempo); }
Cuarto, comparación y cálculo.
Ejemplo 1: cálculo de fecha y hora
Java8 proporciona un nuevo método plusXxx () para calcular el valor de incremento de fecha y hora, reemplazando el método add () original. La nueva API devolverá un nuevo ejemplo de fecha y hora que debe recibirse con un nuevo objeto.
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); }
Ejemplo 2: comparación de fecha y hora
Java8 proporciona isAfter () y isBefore () para juzgar la comparación entre la fecha y hora actuales y la fecha y hora especificadas
public static void main (String [] args) { LocalDate now = LocalDate.now (); LocalDate date1 = LocalDate.of (2000, 1, 1); if (now.isAfter (date1)) { System.out.println ( "El milenio ha pasado"); } LocalDate date2 = LocalDate.of (2020, 1, 1); if (now.isBefore (date2)) { System.out.println ("2020 aún no ha llegado"); } }
V. Zona horaria
Ejemplo: crear una fecha y hora con zona horaria
Java 8 no solo separa la fecha y la hora, sino también la zona horaria. Ahora hay una serie de clases separadas como ZoneId para tratar con una zona horaria específica y la clase ZoneDateTime para representar la hora en una zona horaria determinada.
public static void main (String [] args) { // 上海 时间 ZoneId shanghaiZoneId = ZoneId.of ("Asia / Shanghai"); ZonedDateTime shanghaiZonedDateTime = ZonedDateTime.now (shanghaiZoneId); // 东京 时间 ZoneId tokyoZoneId = ZoneId.of ("Asia / Tokio"); ZonedDateTime tokyoZonedDateTime = ZonedDateTime.now (tokyoZoneId); DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("aaaa-MM-dd HH: mm: ss"); System.out.println ("上海 时间:" + shanghaiZonedDateTime.format (formateador)); System.out.println ("东京 时间:" + tokyoZonedDateTime.format (formateador)); }
Seis, formato
Ejemplo 1: analizar y formatear fechas usando formatos predefinidos
public static void main (String [] args) { // Parse date String dateText = "20180924"; LocalDate date = LocalDate.parse (dateText, DateTimeFormatter.BASIC_ISO_DATE); System.out.println ("Fecha después del formato =" + date); // format date dateText = date.format (DateTimeFormatter.ISO_DATE); System.out.println ("dateText =" + dateText); }
Ejemplo 2: conversión entre fecha y cadena
public static void main (String [] args) { DateTimeFormatter formatter = DateTimeFormatter.ofPattern ("aaaa-MM-dd HH: mm: ss"); // 日期 时间 转 字符串 LocalDateTime now = LocalDateTime.now (); Cadena nowText = now.format (formateador); System.out.println ("nowText =" + nowText); // 字符串 转 日期 时间 String datetimeText = "1999-12-31 23:59:59"; LocalDateTime datetime = LocalDateTime.parse (datetimeText, formatter); System.out.println (fecha y hora); }
Seven, descripción relacionada
Marca de tiempo instantánea Duración Duración, diferencia horaria LocalDate solo contiene la fecha, por ejemplo: 2018-09-24 LocalTime solo contiene la hora, por ejemplo: 10:32:10 LocalDateTime contiene la fecha y hora, por ejemplo: 2018-09-24 10:32:10 Zona horaria de peroides ZoneOffset offset de zona horaria, por ejemplo: +8: 00 ZonedDateTime date time Clock clock con zona horaria , se puede utilizar para obtener la marca de hora actual java.time.format.DateTimeFormatter clase de formato de hora