Cómo obtener fecha y hora actual en Java (import java.util.Date)

Logo Java

Tener la necesidad de manejar fechas cuando programamos es muy común, así como también es común tener dolores de cabeza con el manejo de las fechas en Java, debido a que es un tipo de variable un poco complejo de utilizar a diferencia de tipos como String, double, int. Etc. Hoy veremos cómo obtener fecha y hora actual en Java haciendo uso de la librería import java.util.Date.

Cómo obtener fecha y hora actual en Java.

Cabe recordar que la fecha generada corresponde a la fecha del sistema actual, por ende si lo que deseamos es obtener una fecha y hora confiable es recomendable utilizar la de un servidor. Ya que el usuario podría cambiar la hora de su computador.

Ejemplo 1: Como obtener fecha en Java sin formato

Si lo que deseas es obtener la fecha sin formato, basta con inicializar un objeto de tipo Date, este objeto contendrá la fecha y hora actual.

public static void main(String[] args) {
 Date fecha = new Date();
 System.out.println("Fecha: "+fecha);
 }

El código anterior impimiría:

Fecha: Tue May 29 22:15:31 COT 2018

Nota: Para el código anterior necesitas importar la librería:

import java.util.Date;

Ejemplo 2: Como obtener fecha en Java estableciendo un formato

Lo más apropiado en el uso de fechas es establecer un formato, esto lo logramos utilizando la clase DateFormat, veamos:

public static void main(String[] args) {
 Date fecha = new Date();
 DateFormat Formato = new SimpleDateFormat("yyyy/mm/dd");
 System.out.println("Fecha: "+Formato.format(fecha));
 }

El código anterior imprimiría:

Fecha: 2018/21/29

Nota: para el código anterior necesitas importar las librerías:

import java.text.DateFormat;
import java.text.SimpleDateFormat;

Ejemplo 3: Como formatear y obtener solo la hora

Si lo que deseamos es obtener solo la hora, solo basta con indicarlo en el formato, así:

public static void main(String[] args) {
 Date fecha = new Date();
 DateFormat Formato = new SimpleDateFormat("HH:mm:ss");
 System.out.println("Hora: "+Formato.format(fecha));
 }

El código anterior imprimiría:

Hora: 22:24:49

Ejemplo 4: Como obtener fecha y hora formateadas

Muy sencillo solo debes combinar en el formato establecido ambos valores, así:

public static void main(String[] args) {
 Date fecha = new Date();
 DateFormat Formato = new SimpleDateFormat("yyyy/mm/dd HH:mm:ss");
 System.out.println("Hora: "+Formato.format(fecha));
 }

El código anterior imprimiría:

Fecha y Hora: 2018/26/29 22:26:33

Formatos disponibles:

Podemos establecer el formato de la fecha según nuestras necesidades, en algunos casos es necesario utilizar fechas tipo: año, mes y día, otro día, mes y año, solo deberás jugar con los formatos ejemplos:

  • Año, mes y día: “yyyy/mm/dd”
  • Día, mes y año: “dd/mm/yyyy”
  • Año, día, y mes: “yyyy/dd/mm”
  • O bien en vez de utilizar “/”, utilizar “-“, ejemplo: “yyyy-mm-dd”

Esto aplica también para el manejo de la hora, podemos indicar que va primero y que va después.

Recuperar valores por separado de fecha

En ocasiones es necesario obtener los valores por separado de una fecha, como lo es el año, mes o el día, por lo tanto imaginas que puedes hacerlo de la siguiente forma:

System.out.println("Mes: "+Formato.format(fecha.getMonth()));

Sin embargo la anterior forma está obsoleta desde la versión 1.1 de JDK y fue reemplazada por Calendar, veamos cómo.

public static void main(String[] args) {
 Calendar calendar = Calendar.getInstance();
 System.out.println("Año: "+(calendar.get(1)));
 System.out.println("Mes: "+(calendar.get(2)+1));
 System.out.println("Día: "+(calendar.get(5)));
 }

Como salida obtendríamos:

Año: 2018
Mes: 5
Día: 29

Finalmente podemos hacer referencia a los índices disponibles en esta clase:

1 - YEAR=2018
2 - MONTH=4
3 - WEEK_OF_YEAR=22
4 - WEEK_OF_MONTH=5
5 - DAY_OF_MONTH=29
6 - DAY_OF_YEAR=149
7 - DAY_OF_WEEK=3
8 - DAY_OF_WEEK_IN_MONTH=5
9 - AM_PM=1
10 - HOUR=10
11 - HOUR_OF_DAY=22
12 - MINUTE=41
13 - SECOND=55
14 - MILLISECOND=784

Recuerda que para el uso de Calendar necesitas importar la librería:

import java.util.Calendar;