Bienvenidos sean a este post, hoy continuaremos con lo iniciado en el post anterior sobre la manipulacion de fechas y horas por medio de Java, pongamos manos a la obra.

Veamos como convertir cadenas en fechas, para ello volveremos a utilizar la clase SimpleDateFormat y para ello utilizaremos el metodo parse() como se vera en el siguiente ejemplo:

import java.text.*;
import java.util.*;

public class DateDemo {

        public static void main(String args[]) {
        SimpleDateFormat ft = new SimpleDateFormat("yyyy-MM-dd");
        String entrada = args.length == 0 ? "1818-11-11" : args[0];

        System.out.print(entrada + " cambiondole a ");
        Date t;
        try {
                t = ft.parse(entrada);
                System.out.println(t);
        }
        catch (ParseException e) {
                System.out.println("Incambiable usando " + ft);
        }
        }

}

En este ejemplo volvemos a agregar java.text.* para poder utilizar las herramientas de formateo de texto, tambien utilizaremos java.util.* para tener mas herramientas disponibles, primero crearemos un objeto llamado ft de la clase SimpleDateFormat con el formato año-mes-dia (yyyy-MM-dd), despues crearemos un objeto llamado entrada de la clase String y por medio de un condicional, visto en este post, chequearemos si argumentos es igual a cero le asignara el valor de “1818-11-11”, de lo contrario utilizara el valor pasado en el argumento, luego mostraremos un mensaje donde primero ira el valor de entrada con un mensaje, despues crearemos un objeto llamado t de la clase Date, ahora viene unos metodos interesante que son try y catch, estos son utilizados para capturar errores por medio de try monitoreamos las instrucciones y ante una eventualidad mostramos un error a traves del catch, en el bloque de try a nuestro objeto t le convertiremos el valor de entrada de cadena a fecha y se lo asignaremos todo por medio del metodo parse(), y luego lo mostraremos en pantalla, ante una eventualidad de error se mostrara el mensaje del bloque del catch en pantalla, compilemos nuestra aplicaciones y probemosla para obtener una salida semejante a esta:

tinchicus@dbn001vrt:~/java/program$ java DateDemo
1818-11-11 cambiondole a Wed Nov 11 00:00:00 ART 1818
tinchicus@dbn001vrt:~/java/program$

Esta es la salida cuando no informamos ningun argumento, veamos una salida informando un argumento:

tinchicus@dbn001vrt:~/java/program$ java DateDemo 2018-11-06
2018-11-06 cambiondole a Tue Nov 06 00:00:00 ART 2018
tinchicus@dbn001vrt:~/java/program$

Como pueden ver al enviar un argumento junto al nombre este es el cual sera procesado, recuerden el condicional, y lo mostrara en pantalla ahora veamos un ejemplo con un argumento mal pasado

tinchicus@dbn001vrt:~/java/program$ java DateDemo prueba
prueba cambiondole a Incambiable usando java.text.SimpleDateFormat@f67a0200
tinchicus@dbn001vrt:~/java/program$

Aca pueden ver como funciona el bloque del metodo catch, pasemos a nuestro format de utilizar los metodos de tiempo para este caso veremos como podemos generar una pausa, para ello veamos el siguiente ejemplo:

import java.util.*;

public class SleepDemo {

        public static void main(String args[]){
        try {
                System.out.println(new Date() + "\n");
                Thread.sleep(5*60*10);
                System.out.println(new Date() + "\n");
        }
        catch (Exception e) {
                System.out.println("Hubo una excepcion");
        }
        }
}

En este caso utilizaremos de nuevo import java.util.*; porque utilizaremos una herramienta ademas de la clase Date, en este caso va a ser Thread para poder tener acceso al metodo sleep(), este metodo se encarga de crear un retardo definido por una cantidad de tiempo en milisegundos y en nuestra clase primero mostraremos la fecha y hora actual, luego haremos la pausa para finalmente mostrar nuevamente la hora y fecha actuales, compilemos el programa y probemoslo:

tinchicus@dbn001vrt:~/java/program$ java SleepDemo
Tue Nov 06 23:45:42 ART 2018

Tue Nov 06 23:45:46 ART 2018

tinchicus@dbn001vrt:~/java/program$

Como pueden ver genero una demora de alrededor de 3 seg (3000 milisegundos)  entre una muestra y otra, esta es la funcion de sleep(), es ideal para generar intervalos donde necesitamos esperar un proceso por ejemplo, ahora veamos un ejemplo practico de lo antes explicado y para este caso vamos a medir una diferencia de tiempo entre procesos a traves del siguiente ejemplo:

import java.util.*;

public class DifDemo {

        public static void main(String args[]) {
        try {
        long inicio = System.currentTimeMillis();
        System.out.print(new Date() + "\n");

        Thread.sleep(3000);
        System.out.print(new Date() + "\n");

        long fin = System.currentTimeMillis();
        long diff = fin - inicio;

        System.out.println("La diferencia es: " + diff);
        }
        catch (Exception e) {
        System.out.println("Ocurrio una excepcion");
        }
        }
}

En este caso volveremos a utilizar el bloque try y catch, primero crearemos una variable de tipo long llamada inicio a la cual le almacenaremos la hora actual, luego la mostraremos en pantalla, despues crearemos un retraso por medio del metodo sleep() de tres segundos, una vez terminado el retraso mostraremos la hora y fecha actual, luego  crearemos una nueva variable llamada fin donde volveremos a almacenar el tiempo actual para despues crear una variable llamada diff de tipo long donde haremos la diferencia entre inicio y fin y por ultimo la mostraremos en la siguiente linea, si lo compilamos y lo probamos nos dara la siguiente salida:

tinchicus@dbn001vrt:~/java/program$ java DifDemo
Wed Nov 07 00:30:36 ART 2018
Wed Nov 07 00:30:39 ART 2018
La diferencia es: 3073
tinchicus@dbn001vrt:~/java/program$

Como pueden ver nos devolvio la diferencia de 3073 milisegundos, lo que equivaldria a 3 segundos.

En resumen, hoy hemos continuado con la manipulacion de las horas y fechas con algunos metodos avanzados, como crear una pausa y como por medio de esta pausa podemos hacer una utilidad practica, espero les haya sido util sigueme en Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios