Dominando Date & Time en Java: SimpleDateFormat, obtención de fecha actual y comparación de fechas
Este tutorial cubre los fundamentos para trabajar con fechas y horas en Java, incluyendo:
- Mostrar la fecha y hora actual
- Formatear y parsear fechas con
SimpleDateFormat - Comparar dos fechas
Un objeto Date de Java representa los siguientes componentes:

- El año (2 o 4 dígitos)
- El mes (numérico, abreviatura de tres letras o nombre completo)
- El día del mes
- El día de la semana (ej. Dom, Lun, Mar)
Los computadores soportan muchos parámetros adicionales relacionados con fechas, que discutiremos en secciones posteriores.
Mostrar fecha actual en Java
La clase java.util.Date de Java proporciona una forma simple de obtener la fecha y hora actual del sistema. A continuación se muestra un ejemplo mínimo:
import java.util.Date;
class EjemploFecha {
public static void main(String[] args) {
Date actual = new Date();
System.out.println(actual.toString());
}
}
Salida:
Wed Nov 29 06:36:22 UTC 2017
La salida usa el formato por defecto de toString(). Para presentar la fecha en un diseño personalizado, necesitas formatearla explícitamente.
SimpleDateFormat: Parsear y formatear fechas
Java formatea fechas usando cadenas de patrón que mapean letras a componentes de fecha específicos. A continuación se muestra una tabla de referencia:
| Letra | Componente de Fecha u Hora | Ejemplo |
|---|---|---|
| G | Designador de era | AD |
| y | Año | 2018 |
| M | Mes en el año | July, Jul, 07 |
| w | Semana en el año | 27 |
| W | Semana en el mes | 2 |
| D | Día en el año | 189 |
| d | Día en el mes | 10 |
| F | Día de la semana en el mes | 2 |
| E | Nombre del día en la semana | Tuesday, Tue |
| u | Número de día de la semana (1=Lun … 7=Dom) | 1 |
| a | Marcador AM/PM | PM |
| H | Hora en el día (0-23) | 0 |
| k | Hora en el día (1-24) | 24 |
| K | Hora en am/pm (0-11) | 0 |
| h | Hora en am/pm (1-12) | 12 |
| m | Minuto en la hora | 30 |
| s | Segundo en el minuto | 55 |
| S | Milisegundo | 978 |
| z | Zona horaria | Pacific Standard Time; PST; GMT-08:00 |
| Z | Desplazamiento de zona horaria | -0800 |
| X | Zona horaria | -08, -0800, -08:00 |
Consulta esta tabla siempre que necesites construir una cadena de formato específica.
Uso de SimpleDateFormat
La clase SimpleDateFormat te permite definir un patrón para formatear o parsear fechas. Por ejemplo:
- Formato deseado: 2012.10.23 20:20:45 PST → patrón
yyyy.MM.dd HH:mm:ss zzz - Formato deseado: 09:30:00 AM 23-May-2012 → patrón
hh:mm:ss a dd-MMM-yyyy
Consejo: Presta atención a mayúsculas/minúsculas —usar M para meses y m para minutos es esencial.
import java.text.SimpleDateFormat;
import java.util.Date;
class TestFechasFormato {
public static void main(String[] args) {
Date ahora = new Date();
System.out.println(ahora);
String patron = "hh:mm:ss a dd-MMM-yyyy";
SimpleDateFormat sdf = new SimpleDateFormat(patron);
System.out.println(sdf.format(ahora));
}
}
Salida:
Wed Nov 29 06:31:41 UTC 2017 06:31:41 AM 29-Nov-2017
Comparación de fechas

El método más fiable para comparar fechas en Java es compareTo(), que devuelve un valor negativo si la primera fecha es anterior, cero si son iguales y positivo si es posterior.
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;
class TestCompararFechas {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
Date fecha1 = sdf.parse("20-08-1981");
Date fecha2 = sdf.parse("12-10-2012");
System.out.println("Fecha1 : " + sdf.format(fecha1));
System.out.println("Fecha2 : " + sdf.format(fecha2));
if (fecha1.compareTo(fecha2) > 0) {
System.out.println("La Fecha 1 ocurre después de la Fecha 2");
} else if (fecha1.compareTo(fecha2) < 0) {
System.out.println("La Fecha 1 ocurre antes de la Fecha 2");
} else {
System.out.println("Ambas fechas son iguales");
}
}
}
Salida:
Fecha1 : 20-08-1981 Fecha2 : 12-10-2012 La Fecha 1 ocurre antes de la Fecha 2
Java
- Cálculo de voltaje y corriente en circuitos DC reactivos
- Guía Completa de Fecha y Hora en C++
- Obtener la Fecha y Hora Actual en Python: Guía Práctica
- Python: Obtener Hora Actual y Datos de Zona Horaria Fácilmente
- Dominando fechas y horas en Python: Guía práctica
- Dominar Operadores en Java: Tipos, Sintaxis y Ejemplos Prácticos
- Comentarios en Java: Tipos, Uso y Mejores Prácticas
- Dominar el Bucle for Mejorado en Java: Sintaxis, Ejemplos y Mejores Prácticas
- Dominando Fecha y Hora en Java: Constructores, Métodos y Mejores Prácticas
- Java 10 estrena versionado basado en tiempo para actualizaciones bianuales predecibles
- Java 8: La Nueva y Robusta API de Fecha y Hora