Anuncios

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
Anuncios

Pasemos a ver una tabla con algunos metodos disponibles para nuestra clase:

MetodoTipo de DatoDescripcion
after(Date fecha)BooleanoDevuelve verdadero (true) si la fecha informada es posterior a la actual de lo contrario retorna falso (false)
before(Date fecha)BooleanoDevuelve verdadero (true) si la fecha informada es anterior a la actual de lo contrario retorna falso (false)
clone()ObjetoDuplica el objeto invocador de fecha
compareTo(Date fechaEnteroCompara la fecha del objeto invocador con la informada, si es igual devolvera el valor 0 de lo contrario devolvera otro valor.
compareTo(Objeto obj)EnteroCompara la fecha del objeto invocador con la informada, si es igual devolvera el valor 0 de lo contrario devolvera otro valor.
equals(Objeto obj)BooleanoDevuelve verdadero (true) si el objeto coinicide en fecha y hora con el informado de lo contrario retorna falso (false)
getTime()LongDevuelve en milisegundos el tiempo transcurrido desde el 1 de Enero de 1970 (Tiempo UNIX)
hashCode()EnteroDevuelve el codigo hash del objeto invocador
settime(long tiempo)VoidSeteamos 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()CadenaConvierte el objeto de Date en una cadena
Anuncios

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)));         	} 
} 
Anuncios

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$
Anuncios

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.
Anuncios

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:

CaracterDescripcionEjemplo
GDesignador de EraDC
yAño en cuatro digitos2018
MMes del añoOctubre o 10
dDia del mes22
hHora en AM/PM1 a 12
HHora en el dia0 a 23
mMinuto en la hora30
sSegundo en el minuto53
Smilisegundos234
ENombre de dia en la semanaJue
DDia en el año360
FDia de la semana en el mes2
wLa semana en el año40
WLa semana en el mes1
aMarcador AM/PMPM
kHora en el dia1 a 24
KHora en el dia0 a 11
zZona horariaArgentina Time (ART)
Escape de textoDelimitador
Comilla simple
Anuncios

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));
         } 
} 
Anuncios

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$
Anuncios

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("");
         }
} 
Anuncios

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$
Anuncios

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 );
Anuncios

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:

CaracteresDescripcionEjemplo
%sEl tiempo UNIX1541520334942
%tBMuestra el nombre completo del mesOctubre
%tdMuestra el dia del mes con dos digitos06
%tYMuestra el año en cuatro digitos2018

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()

Anuncios

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.

Anuncios

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.00