Extraño error en el tiempo de formato Java

El proyecto informó recientemente de un error, el tiempo de finalización es menor que el tiempo de inicio. Me llevó mucho tiempo descubrir que se trataba de un error al formatear el tiempo.
Generalmente formateamos el tiempo,
SimpleDateFormat df = new SimpleDateFormat ("AAAA-MM-DD");
Aquí hay muchos formatos de hora, AAAA y aaaa son muy diferentes, primero mire el código:
SimpleDateFormat df = nuevo SimpleDateFormat (" AAAA-MM-DD ”);
Cadena d =“ 2020-01-02 ”;
intente {
Fecha fecha = df.parse (d);
System.out.println (fecha);
} catch (ParseException e) {
// TODO Bloqueo de captura generado automáticamente
e.printStackTrace ();
} La
salida es: dom 29 de diciembre 00:00:00 CST 2019
¡magia! ! ! ! ¿Cómo se convirtió en 2019 después de formatear en 2020? ? ?
Resulta que esto es un error en Java. Al formatear el tiempo, y es Year, y Y representa Week year. El YYYY en mayúscula será el año de la semana donde la fecha debe formatearse, es decir, qué año es la semana a la que pertenece el 2 de enero de 2020, y tenga en cuenta que la semana comienza el domingo, por lo que el año del 2 de enero todavía está 2019.
Para evitar tales errores, es mejor usar aaaa al formatear el tiempo. El código es el siguiente:
SimpleDateFormat df = new SimpleDateFormat ("aaaa-MM-DD");
Cadena d = "2020-01-02";
intente {
Fecha fecha = df.parse (d);
System.out.println (fecha);
} catch (ParseException e) {
// TODO Bloque de captura generado automáticamente
e.printStackTrace ();
}
输出 结果 : Jue 02 de enero 00:00:00 CST 2020

Publicado 6 artículos originales · me gusta 0 · visitas 354

Supongo que te gusta

Origin blog.csdn.net/weixin_44863376/article/details/103883738
Recomendado
Clasificación