Java Fecha y Hora
Primero comprendamos los parรกmetros que constan de un Fecha.
Contendrรก principalmente โ
- La funciรณn year (en 2 o 4 dรญgitos)
- La funciรณn mes (ya sea en 2 dรญgitos, las primeras 3 letras del mes o la palabra completa del mes).
- La funciรณn datos (serรก la fecha real del mes).
- La funciรณn day (el dรญa en la fecha indicada, como domingo, lunes, martes, etc.)
En el รกmbito de los sistemas informรกticos, existen muchos parรกmetros que se pueden utilizar para asociarlos a una fecha. Los veremos en las partes posteriores de este tema.
Mostrar fecha en Java
Ahora veamos cรณmo Java proporcionenos la fecha. Primero, veremos cรณmo obtener la fecha actual.
Java proporciona una clase Date bajo el paquete java.util. El paquete proporciona varios mรฉtodos para jugar con la fecha.
Puede utilizar el objeto Date invocando el constructor de la clase Date de la siguiente manera:
import java.util.Date;
class Date_Ex1 {
public static void main(String args[]) {
// Instantiate a Date object by invoking its constructor
Date objDate = new Date();
// Display the Date & Time using toString()
System.out.println(objDate.toString());
}
}
Salida:
Wed Nov 29 06:36:22 UTC 2017
En el ejemplo anterior, la fecha se muestra en el formato predeterminado. Si queremos mostrar la fecha y la hora en otro formato, primero comprenda el formato de la fecha.
SimpleDateFormat: analizar y formatear fechas
Todos debรฉis haber aprendido los alfabetos en vuestro jardรญn de infanciaโฆ.
Aprendamos ahora el ABC del formato de fecha.
| Carta | Componente de fecha u hora | Ejemplos |
|---|---|---|
| G | Designador de era | AD |
| y | Aรฑo | 2018 |
| M | Mes del aรฑo | julio o julio o 07 |
| w | Semana en el aรฑo | 27 |
| W | Semana en mes | 2 |
| D | Dรญa en el aรฑo | 189 |
| d | Dรญa en mes | 10 |
| F | Dรญa de la semana en el mes | 2 |
| E | Nombre del dรญa en la semana | martes o martes |
| u | Nรบmero de dรญa de la semana (1 = Monday, โฆ, 7 = domingo) | 1 |
| a | Marcador am / pm | PM |
| H | Hora del dรญa (0-23) | 0 |
| k | Hora del dรญa (1-24) | 24 |
| K | Hora en am / pm (0-11) | 0 |
| h | Hora en am / pm (1-12) | 12 |
| m | Minuto en hora | 30 |
| s | Segundo en minuto | 55 |
| S | Milisegundo | 978 |
| z | Huso Horario | Hora estรกndar del Pacรญfico; PST; GMT -08: 00 |
| Z | Huso Horario | -0800 |
| X | Huso Horario | -08 o -0800 o -08:00 |
No se preocupe, no necesita recordarlos todos, puede consultarlos en cualquier momento que necesite formatear una fecha en particular.
ยฟCรณmo utilizar SimpleDateFormat?
Java proporciona una clase llamada SimpleDateFormat que le permite formatear y analizar fechas segรบn sus requisitos.
Puede utilizar los caracteres anteriores para especificar el formato.
Por ejemplo:
1) Formato de fecha requerido: 2012.10.23 20:20:45 PST
El formato de fecha apropiado especificado serรก: aaaa.MM.dd HH:mm:ss zzz
2) Formato de fecha requerido:09:30:00 AM 23-May-2012
El formato de fecha apropiado especificado serรก:hh:mm:ss un dd-MMM-aaaa
Consejo: Tenga cuidado con las letras mayรบsculas. ยกSi confundes M con m, obtendrรกs resultados no deseados!
Aprendamos esto con un ejemplo de cรณdigo.
import java.text.SimpleDateFormat;
import java.util.Date;
class TestDates_Format {
public static void main(String args[]) {
Date objDate = new Date(); // Current System Date and time is assigned to objDate
System.out.println(objDate);
String strDateFormat = "hh:mm:ss a dd-MMM-yyyy"; //Date format is Specified
SimpleDateFormat objSDF = new SimpleDateFormat(strDateFormat); //Date format string is passed as an argument to the Date format object
System.out.println(objSDF.format(objDate)); //Date formatting is applied to the current date
}
}
Salida:
Wed Nov 29 06:31:41 UTC 2017 06:31:41 AM 29-Nov-2017
Ejemplo de comparaciรณn de fechas
El mรฉtodo mรกs รบtil para comparar fechas es utilizar el mรฉtodo โ compareTo()
Echemos un vistazo al siguiente fragmento de cรณdigo:
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.util.Date;
class TestDates_Compare {
public static void main(String args[]) throws ParseException {
SimpleDateFormat objSDF = new SimpleDateFormat("dd-mm-yyyy");
Date dt_1 = objSDF.parse("20-08-1981");
Date dt_2 = objSDF.parse("12-10-2012");
System.out.println("Date1 : " + objSDF.format(dt_1));
System.out.println("Date2 : " + objSDF.format(dt_2));
if (dt_1.compareTo(dt_2) > 0) {
System.out.println("Date 1 occurs after Date 2");
} // compareTo method returns the value greater than 0 if this Date is after the Date argument.
else if (dt_1.compareTo(dt_2) < 0) {
System.out.println("Date 1 occurs before Date 2");
} // compareTo method returns the value less than 0 if this Date is before the Date argument;
else if (dt_1.compareTo(dt_2) == 0) {
System.out.println("Both are same dates");
} // compareTo method returns the value 0 if the argument Date is equal to the second Date;
else {
System.out.println("You seem to be a time traveller !!");
}
}
}
Salida:
Date1 : 20-08-1981 Date2 : 12-10-2012 Date 1 occurs before Date 2


