Anuncios

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.

Anuncios

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

}
Anuncios

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

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

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

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

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

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

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.

Anuncios

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