Anuncios

Bienvenidos sean a este post, hoy veremos un metodo de la clase Date.

Anuncios
Nota:
Esta clase como este metodo ya son obsoletos pero aun pueden usarse. Para ello, deben usar la opcion -Xlint al momento de compilarlo.
Anuncios

Esta funcion compara si dos fechas son iguales, la comparacion la realiza a nivel de milisegundos (Tiempo Unix). Veamos como es su sintaxis:

objeto1.equals(objeto2);
Anuncios

Se aplica al objeto que contiene la primer fecha y como argumento pasamos el objeto con la segunda fecha. Este devuelve un valor booleano, si es true indica que ambos son iguales. En caso contrario, devolvera un false. Analicemos el siguiente ejemplo:

import java.util.*;

public class Fecha
{
  public static void main(String[] args)
  {
    try
    {
        Date fecha1 = new Date();
        Thread.sleep(2000);
        Date fecha2 = new Date();
        boolean resultado = fecha1.equals(fecha2);
        if (resultado)
          System.out.println("Son iguales");
        else
          System.out.println("Son diferentes");
    } catch (InterruptedException e) {
            e.printStackTrace();
    }
  }
}
Anuncios
Anuncios

En este ejemplo creamos dos objetos de tipo Date para almacenar la fecha completa pero agregamos un sleep con una demora de dos segundos para que sean distintos. Como utilizamos un sleep debemos usarlo a traves de un try/catch para capturar cualquier excepcion generada. Siguiendo con el try, despues de creadas las dos fechas en una variable almacenamos el resultado de comparar los dos objetos anteriores mediante equals. Lo siguiente es un condicional donde evaluaremos a resultado, si obtiene un true mostramos un mensaje indicando que son iguales de lo contrario indicamos que son distintos. Finalmente en el catch mostramos el rastro de memoria en el stack si este lanza alguna excepcion. Compilemos y veamos como es la salida:

$ java Fecha
Son diferentes
$
Anuncios

En este caso nos indica que son distintas porque hicimos una pausa de dos segundos entre la creacion de uno y otro. Esto es asi porque no compara la fecha y hora de cada uno sino los milisegundos de diferencia entre uno y otro, Tiempo Unix. Hagamos el siguiente cambio en el codigo anterior:

import java.util.*;

public class Fecha
{
  public static void main(String[] args)
  {
    try
    {
        Date fecha1 = new Date();
        Thread.sleep(2000);
        Date fecha2 = (Date) fecha1.clone();
        boolean resultado = fecha1.equals(fecha2);
        if (resultado)
          System.out.println("Son iguales");
        else
          System.out.println("Son diferentes");
    } catch (InterruptedException e) {
            e.printStackTrace();
    }
  }
}
Anuncios

El unico cambio que realizamos es en el segundo objeto, fecha2, donde en lugar tomar la fecha actual copiamos al primer objeto mediante clone. Como este al momento de copiarlo, devuelve un objeto de tipo Object debemos «castear» al tipo Date para convertirlo. El resto sigue siendo el mismo codigo que comentamos anteriormente. Veamos como es la salida:

$ java Fecha
Son iguales
$
Anuncios
Nota:
Si desean saber mas sobre clone, les recomiendo visitar este post.
Anuncios

Ahora nos informa que son iguales porque hacemos una copia del primer elemento y mas alla de la demora tendra el mismo valor. Actualmente, si generan los dos objetos sin la demora muy probablemente tambien comente que son iguales pero en algunos dispositivos o computadoras mas viejas puede generarse una demora y decir que son distintos.

Anuncios

En resumen, hoy hemos visto a Date.equals, que es, para que sirve, como se utiliza, un ejemplo practico para verlo en accion y una pequeña modificacion para ver como trabaja de otra forma. Espero les haya resultado de utilidad 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

Donation

It’s for maintenance of the site, thanks!

$1.50