Bienvenidos sean a este post, hoy hablaremos sobre los metodos para controlar la fecha y la hora por medio del paquete java.util.Dates, veamos sus dos contructores:
- Date(), este constructor inicia el objeto con la fecha y hora actual
- Date(long miliseg), este constructor acepta un atributo con milisegundos que equivale al tiempo transcurrido desde 1ero. de Enero de 1970
Pasemos a ver una tabla con algunos metodos disponibles para nuestra clase:
Metodo | Tipo de Dato | Descripcion |
after(Date fecha) | Booleano | Devuelve verdadero (true) si la fecha informada es posterior a la actual de lo contrario retorna falso (false) |
before(Date fecha) | Booleano | Devuelve verdadero (true) si la fecha informada es anterior a la actual de lo contrario retorna falso (false) |
clone() | Objeto | Duplica el objeto invocador de fecha |
compareTo(Date fecha | Entero | Compara la fecha del objeto invocador con la informada, si es igual devolvera el valor 0 de lo contrario devolvera otro valor. |
compareTo(Objeto obj) | Entero | Compara la fecha del objeto invocador con la informada, si es igual devolvera el valor 0 de lo contrario devolvera otro valor. |
equals(Objeto obj) | Booleano | Devuelve verdadero (true) si el objeto coinicide en fecha y hora con el informado de lo contrario retorna falso (false) |
getTime() | Long | Devuelve en milisegundos el tiempo transcurrido desde el 1 de Enero de 1970 (Tiempo UNIX) |
hashCode() | Entero | Devuelve el codigo hash del objeto invocador |
settime(long tiempo) | Void | Seteamos la fecha y el tiempo por medio del tiempo informado, representados por el tiempo transferido en milisegundos desde el 1 de Enero de 1970. |
toString() | Cadena | Convierte el objeto de Date en una cadena |
Pasemos un simple ejemplo de como obtener la fecha y hora, por medio de varios metodos, para mostrarlo usaremos el metodo toString():
import java.util.Date;
public class DateDemo
{
public static void main(String args[])
{
Date fecha = new Date();
System.out.println("Valor de fecha: " + fecha.toString());
System.out.println("Tiempo UNIX: " + fecha.getTime());
System.out.println("Valor de before(): " +
new Date(2016,11,6).before(new Date(2017,11,6))); }
}
En este ejemplo, primero vamos a agregar el paquete Date por medio del import, esto nos permitira tener acceso a todos los metodos de Date, luego crearemos un objeto del tipo Date llamado fecha, con el constructor antes descripto, luego mostraremos en pantalla primero el valor actual obtenido de la hora y fecha, nuestra segunda linea nos muestra el tiempo UNIX en milisegundos, y por ultimo utilizaremos el metodo before() y para ello creamos un nuevo objeto con fecha, para este metodo debemos informarle un atributo con formato de fecha (por eso el new Date()) y el formato de ingreso es primero año, luego mes y por ultimo dia, una vez ingresado de esa forma obtendremos un resultado, luego resta compilarlo y probarlo:
tinchicus@dbn001vrt:~/java/program$ java DateDemo Valor de fecha: Tue Nov 06 13:05:34 ART 2018 Tiempo UNIX: 1541520334942 Valor de before(): true tinchicus@dbn001vrt:~/java/program$
Como pueden ver en la salida obtendremos diferentes datos y como nuestro ultimo objeto creado como al compararlo con before nos devuelve true por ser efectivamente asi.
Nota: Puede ocurrir que al compilarlo obtengamos el siguiente error: tinchicus@dbn001vrt:~/java/program$ javac DateDemo.java Note: DateDemo.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. Ahora si lo recompilamos con la opcion -Xlint obtendremos la siguiente salida: tinchicus@dbn001vrt:~/java/program$ javac -Xlint DateDemo.java DateDemo.java:10: warning: [deprecation] Date(int,int,int) in Date has been deprecated new Date(2016,11,6).before(new Date(2017,11,6))); ^ DateDemo.java:10: warning: [deprecation] Date(int,int,int) in Date has been deprecated new Date(2016,11,6).before(new Date(2017,11,6))); ^ 2 warnings Pero no se preocupen porque el programa se compilara igual ya que no son errores sino simplemente avisos de metodos deshechados por eso les hago el aviso.
Pasemos a la siguiente seccion, en este caso como hacer un formato de nuestras fechas y horas por medio del metodo SimpleDateFormat(), este nos permitira ordenar y formatear las fechas por medio de los siguientes codigos:
Caracter | Descripcion | Ejemplo |
G | Designador de Era | DC |
y | Año en cuatro digitos | 2018 |
M | Mes del año | Octubre o 10 |
d | Dia del mes | 22 |
h | Hora en AM/PM | 1 a 12 |
H | Hora en el dia | 0 a 23 |
m | Minuto en la hora | 30 |
s | Segundo en el minuto | 53 |
S | milisegundos | 234 |
E | Nombre de dia en la semana | Jue |
D | Dia en el año | 360 |
F | Dia de la semana en el mes | 2 |
w | La semana en el año | 40 |
W | La semana en el mes | 1 |
a | Marcador AM/PM | PM |
k | Hora en el dia | 1 a 24 |
K | Hora en el dia | 0 a 11 |
z | Zona horaria | Argentina Time (ART) |
‘ | Escape de texto | Delimitador |
« | Comilla simple | ‘ |
Para entender un poco mejor esto vamos a verlo a traves del siguiente ejemplo:
import java.text.*;
import java.util.*;
public class DateDemo
{
public static void main(String args[])
{
Date ahora = new Date();
SimpleDateFormat ft = new SimpleDateFormat(
"E dd.MM.yyyy 'at' hh:mm:ss a z");
System.out.println("Fecha actual: " + ft.format(ahora));
}
}
En este caso vamos a modificar nuestro ejemplo anterior, donde agregaremos una linea: import java.text.*; y vamos a modificar la java.util.Date; por java.util.*; estas nos permitiran acceder a todas nuestras clases y metodos dentro de main(), primero crearemos un nuevo objeto llamado ahora de la clase Date, luego crearemos un objeto llamado ft de la clase SimpleDateFormat donde estableceremos algunos codigos de la tabla anterior, y despues lo mostramos en pantalla y a traves del metodo format(), lo compilamos y veamos su salida:
tinchicus@dbn001vrt:~/java/program$ java DateDemo Fecha actual: mar 06.11.2018 at 03:55:09 PM ART tinchicus@dbn001vrt:~/java/program$
Observen como se mostro primero el nombre del dia por medio del caracter E, luego por medio de dd.MM.yyyy se muestra la fecha completa, despues por medio de hh:mm:ss se mostro la hora completa, el caracter a muestra el PM y por ultimo con el caracter z muestra la zona horaria, como se ve en el ejemplo utilizamos el metodo format() pero esto puede ser realizado por medio de printf() y para ello lo veremos en el siguiente ejemplo:
import java.util.Date;
public class DateDemo
{
public static void main(String args[])
{
Date fecha = new Date();
System.out.printf("%1$s %2$tB %2$td, %2$tY", "Fecha: ", fecha );
System.out.println("");
}
}
En este ejemplo volvemos a modificar nuestra clase DateDemo, para la cual eliminaremos uno de los paquetes de import, en este caso el relacionado a texto, eliminaremos el resto de las lineas y modificaremos la creadora del objeto ahora para que haga un objeto llamado fecha, nuestra siguiente linea sera para imprimir la fecha en el formato que deseamos, luego mandamos un cambio de linea para mejorar la salida si compilanos nuestra aplicacion y la probamos nos dara la siguiente salida:
tinchicus@dbn001vrt:~/java/program$ java DateDemo Fecha: noviembre 06, 2018 tinchicus@dbn001vrt:~/java/program$
En este caso vemos que obtuvimos una salida de solamente la fecha, esto es gracias a una particularidad que nos perimte printf() la cual es poder pasarle cual es el indice al cual formatear y para esto se lo indicamos entre el porcentaje (%) y el signo de pesos ($), como por ejemplo %2$ y luego lo seguimos por el codigo para formatearlo, probemos de hacer la siguiente modificacion en nuestro ejemplo, cambiemos esta linea:
System.out.printf("%1$s %2$tB %2$td, %2$tY", "Fecha: ", fecha );
Por esta linea:
System.out.printf("%s %tB %<td, %<tY", "Fecha: ", fecha );
Si lo compilamos y lo probamos deberemos obtener la misma salida, esto es gracias al signo menor (<) el cual indicara que se debe usar el mismo argumento que en el formato anterior otra vez, ahora veamos una pequeña descripcion de los codigos utilizados en nuestro ejemplo:
Caracteres | Descripcion | Ejemplo |
%s | El tiempo UNIX | 1541520334942 |
%tB | Muestra el nombre completo del mes | Octubre |
%td | Muestra el dia del mes con dos digitos | 06 |
%tY | Muestra el año en cuatro digitos | 2018 |
Estos son los codigos utilizados por nosotros, son solo algunos de los disponibles, podemos ver cual es su funcion y un ejemplo de salida, en otro post subire todos los codigos disponibles para formatear en printf() o format()
En resumen, hemos visto la primera parte de como podemos acceder, manipular, y formatear nuestras fechas y horas para nuestras aplicaciones, algunas clases y metodos para la manipulacion de horas y fechas, en nuestro proximo post continuaremos con mas metodos para nuestras fechas y horas, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.
Tengo un Patreon donde podes acceder de manera exclusiva a material para este blog antes de ser publicado, sigue los pasos del link para saber como.


Tambien podes donar
Es para mantenimiento del sitio, gracias!
$1.50