Trabajando con fechas en java

Trabajar con fechas en java no es para nada complicado, pero puede llegar a confundirnos si tomamos en cuenta la cantidad de formas que java nos ofrece para hacerlo.

En este articulo explicare brevemente como utilizar las funciones mas comunes y un breve ejemplo/proyecto en Android aplicando lo antes explicado.

Las clases java.util.Date y java.sql.Date. Son las clases mas usadas para el trabajo con fechas.

java.util.Date: La clase java.util.Date representa un instante de tiempo específico, con precisión de milisegundos.

java.util.Date utilDate = new java.util.Date();
System.out.println(“java.util.Date: ” + utilDate);

  • El año “y” está representado por un entero igual a (“y” – 1900). Por ejemplo el año 2004 se representa como 104 (2004 – 1900).
  • Los meses son representados por números entre 0 y 11, donde enero es 0 y diciembre es 11.
  • Los días y minutos se representan de forma corriente. Entre 1 – 31 y 0 – 59 respectivamente.
  • Las horas van entre 0 y 23, donde la medianoche es 0 y el medio día 12.
  • Los segundos van entre 0 y 61. (el 61 solo en casos excepcionales)Si necesitamos obtener el año el mes el dia la hora,minuto o segudo necesitaremos llamar a la clase java.util.Calendar para que nos provea de dicha informacion.

java.sql.Date: Esta clase hereda de java.util.Date y se instancia pasándole un tipo de dato long a su constructor.

java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
System.out.println(“java.sql.Date.: ” + sqlDate);

Pero tambien podemos aplicar la forma inversa de la siguiente manera:
java.util.Date utilDate2 = new java.util.Date(sqlDate.getTime());

Creando nuestro proyecto en Android.

Es muy simple, nuestro codigo  consiste en  un TimePicker en donde seteamos una hora y un EditText donde adicionaremos un numero para agregar “tiempo al tiempo”

Primero definimos las variables que luego utilizaremos

private int mYear;
private int mMonth;
private int mDay;
private int mHour;
private int mMinute;
private TextView tv_resultado;
private EditText ed_duration;
private TimePicker tp_time;
private Button btn_calcular;
static final int TIME_DIALOG_ID = 0;
private java.util.Date utilDate;

y obtenemos todos los elementos de nuestro xml

tv_resultado = (TextView) findViewById(R.id.tv_resultado);
ed_duration = (EditText) findViewById(R.id.ed_duration);
tp_time = (TimePicker)findViewById(R.id.tm_time);
btn_calcular = (Button)findViewById(R.id.btn_calcular);

Instanciamos un objeto desde la clase Calendar y extraemos la fecha hora actual.
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR);
mMonth = c.get(Calendar.MONTH);
mDay = c.get(Calendar.DAY_OF_MONTH);
mHour = c.get(Calendar.HOUR_OF_DAY);
mMinute = c.get(Calendar.MINUTE);

Luego en el evento click del botón aplicamos el proceso de calculo.

Creamos un objeto de tipo java.util.Date pasandole la fecha hora antes obtenida.

utilDate = new java.util.Date(mYear, mMonth, mDay, mHour, mMinute);

usamos utilDate.getTime() para calcular nuestro tiempo previamente definido.

long d = utilDate.getTime() + duration * 60 * 1000;

Convertimos a fecha nuestro resultado

Date resDate = new Date(d);

Y finalmente mostramos el objeto fecha formateado usando SimpleDateFormat
SimpleDateFormat formatter = new SimpleDateFormat(“dd/MM/yy HH:mm”);

tv_resultado.setText(formatter.format(resDate));

Dejo el fuente del codigo para descargar..desde aquí.

Espero que les sirva..Saludos!!

Anuncios

Etiquetas: , , , ,

About exequielc

Hola! Estás en el blog de Exequiel Catalani. Como es un blog, se trata de una extensión más o menos lineal de las cosas que hago y pasan por mi cabeza: ciberculturas, videos de la red, nuevos medios y tecnologia, y Programacion etc...

Responder

Por favor, inicia sesión con uno de estos métodos para publicar tu comentario:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: