Saltar al contenido

Java: fecha y hora

septiembre 23, 2021

Java proporciona la Fecha clase disponible en java.util paquete, esta clase encapsula la fecha y hora actuales.

La clase Date admite dos constructores como se muestra en la siguiente tabla.

No Señor. Constructor y descripción
1

Fecha( )

Este constructor inicializa el objeto con la fecha y hora actuales.

2

Fecha (milisegundos largos)

Este constructor acepta un argumento que equivale al número de milisegundos que han transcurrido desde la medianoche del 1 de enero de 1970.

A continuación se muestran los métodos de la clase de fecha.

No Señor. Método y descripción
1

booleano después de (fecha fecha)

Devuelve verdadero si el objeto de fecha que invoca contiene una fecha posterior a la especificada por fecha; de lo contrario, devuelve falso.

2

booleano antes de (fecha fecha)

Devuelve verdadero si el objeto de fecha que invoca contiene una fecha anterior a la especificada por fecha; de lo contrario, devuelve falso.

3

Clonar objeto ()

Duplica el objeto Date que invoca.

4

int compareTo (fecha fecha)

Compara el valor del objeto que invoca con el de la fecha. Devuelve 0 si los valores son iguales. Devuelve un valor negativo si el objeto que lo invoca es anterior a la fecha. Devuelve un valor positivo si el objeto que lo invoca es posterior a la fecha.

5

int compareTo (Objeto obj)

Funciona de forma idéntica a compareTo (Date) si obj es de la clase Date. De lo contrario, arroja una ClassCastException.

6

booleano es igual a (fecha del objeto)

Devuelve verdadero si el objeto de fecha que invoca contiene la misma hora y fecha que el especificado por fecha; de lo contrario, devuelve falso.

7

long getTime ()

Devuelve el número de milisegundos transcurridos desde el 1 de enero de 1970.

8

int hashCode ()

Devuelve un código hash para el objeto que lo invoca.

9

void setTime (tiempo largo)

Establece la fecha y la hora especificadas por la hora, que representa un tiempo transcurrido en milisegundos desde la medianoche del 1 de enero de 1970.

10

Cadena toString ()

Convierte el objeto Date que invoca en una cadena y devuelve el resultado.

Obtener la fecha y la hora actuales

Este es un método muy sencillo para obtener la fecha y hora actual en Java. Puede utilizar un objeto Date simple con Encadenar() método para imprimir la fecha y hora actuales de la siguiente manera:

Ejemplo

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();

      // display time and date using toString()
      System.out.println(date.toString());
   }
}

Esto producirá el siguiente resultado:

Producción

on May 04 09:51:52 CDT 2009

Comparación de fechas

A continuación se muestran las tres formas de comparar dos fechas:

  • Puede usar getTime () para obtener el número de milisegundos que han transcurrido desde la medianoche del 1 de enero de 1970 para ambos objetos y luego comparar estos dos valores.

  • Puede utilizar los métodos before (), after () y equals (). Debido a que el día 12 del mes es anterior al 18, por ejemplo, new Date (99, 2, 12) .before (new Date (99, 2, 18)) devuelve verdadero.

  • Puede utilizar el método compareTo (), que está definido por la interfaz Comparable e implementado por Date.

Formato de fecha usando SimpleDateFormat

SimpleDateFormat es una clase concreta para formatear y analizar fechas de manera sensible a la configuración regional. SimpleDateFormat le permite comenzar eligiendo cualquier patrón definido por el usuario para el formato de fecha y hora.

Ejemplo

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

public class DateDemo {

   public static void main(String args[]) {
      Date dNow = new Date( );
      SimpleDateFormat ft = 
      new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");

      System.out.println("Current Date: " + ft.format(dNow));
   }
}

Esto producirá el siguiente resultado:

Producción

Current Date: Sun 2004.07.18 at 04:14:09 PM PDT

Códigos de formato de formato de fecha simple

Para especificar el formato de hora, use una cadena de patrón de tiempo. En este patrón, todas las letras ASCII se reservan como letras de patrón, que se definen de la siguiente manera:

Personaje Descripción Ejemplo
GRAMO Designador de era ANUNCIO
y Año en cuatro dígitos 2001
METRO Mes del año Julio o 07
D Día en mes 10
h Hora en AM / PM (1 ~ 12) 12
H Hora del día (0 ~ 23) 22
metro Minuto en hora 30
s Segundo en minuto 55
S Milisegundo 234
mi Día de la semana martes
D Día en el año 360
F Día de la semana en el mes 2 (segundo miércoles de julio)
w Semana en el año 40
W Semana en mes 1
a Marcador AM / PM PM
k Hora del día (1 ~ 24) 24
K Hora en AM / PM (0 ~ 11) 10
z Zona horaria hora estándar del Este
Escape por texto Delimitador
« Una frase

Formateo de fecha con printf

El formateo de fecha y hora se puede hacer muy fácilmente usando printf método. Utiliza un formato de dos letras, comenzando con t y terminando en una de las letras de la tabla como se muestra en el siguiente código.

Ejemplo

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();

      // display time and date
      String str = String.format("Current Date/Time : %tc", date );

      System.out.printf(str);
   }
}

Esto producirá el siguiente resultado:

Producción

Current Date/Time : Sat Dec 15 16:37:57 MST 2012

Sería un poco tonto si tuviera que proporcionar la fecha varias veces para formatear cada parte. Por esa razón, una cadena de formato puede indicar el índice del argumento a formatear.

El índice debe seguir inmediatamente al% y debe terminar con un $.

Ejemplo

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();
  
      // display time and date
      System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date);
   }
}

Esto producirá el siguiente resultado:

Producción

Due date: February 09, 2004

Alternativamente, puede usar la bandera <. indica que se debe utilizar de nuevo el mismo argumento en la especificaci formato anterior.>

Ejemplo

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();
  
      // display formatted date
      System.out.printf("%s %tB %<te, %<tY", "Due date:", date);
   }
}

Esto producirá el siguiente resultado:

Producción

Due date: February 09, 2004

Caracteres de conversión de fecha y hora

Personaje Descripción Ejemplo
C Fecha y hora completas Lunes 04 de mayo 09:51:52 CDT 2009
F Fecha ISO 8601 2004-02-09
D Fecha con formato de EE. UU. (Mes / día / año) 02/09/2004
T Tiempo de 24 horas 18:05:19
r Tiempo de 12 horas 06:05:19 pm
R Tiempo de 24 horas, sin segundos 18:05
Y Año de cuatro dígitos (con ceros a la izquierda) 2004
y Últimos dos dígitos del año (con ceros a la izquierda) 04
C Primeros dos dígitos del año (con ceros a la izquierda) 20
B Nombre del mes completo febrero
B Nombre del mes abreviado feb
metro Mes de dos dígitos (con ceros a la izquierda) 02
D Día de dos dígitos (con ceros a la izquierda) 03
mi Día de dos dígitos (sin ceros a la izquierda) 9
A Nombre completo del día de la semana lunes
a Nombre abreviado del día de la semana Lun
j Día del año de tres dígitos (con ceros a la izquierda) 069
H Hora de dos dígitos (con ceros a la izquierda), entre 00 y 23 18
k Hora de dos dígitos (sin ceros a la izquierda), entre 0 y 23 18
I Hora de dos dígitos (con ceros a la izquierda), entre 01 y 12 06
l Hora de dos dígitos (sin ceros a la izquierda), entre 1 y 12 6
METRO Minutos de dos dígitos (con ceros a la izquierda) 05
S Segundos de dos dígitos (con ceros a la izquierda) 19
L Milisegundos de tres dígitos (con ceros a la izquierda) 047
norte Nanosegundos de nueve dígitos (con ceros a la izquierda) 047000000
PAG Marcador de mañana o tarde en mayúsculas PM
pag Marcador de mañana o tarde en minúsculas pm
z Desplazamiento numérico RFC 822 de GMT -0800
Z Zona horaria PST
s Segundos desde 1970-01-01 00:00:00 GMT 1078884319
Q Milisegundos desde 1970-01-01 00:00:00 GMT 1078884319047

Hay otras clases útiles relacionadas con la fecha y la hora. Para obtener más detalles, puede consultar la documentación estándar de Java.

Analizar cadenas en fechas

La clase SimpleDateFormat tiene algunos métodos adicionales, en particular parse (), que intenta analizar una cadena de acuerdo con el formato almacenado en el objeto SimpleDateFormat dado.

Ejemplo

import java.util.*;
import java.text.*;
  
public class DateDemo {

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

      System.out.print(input + " Parses as "); 
      Date t;
      try {
         t = ft.parse(input); 
         System.out.println
      } catch (ParseException e) { 
         System.out.println("Unparseable using " + ft); 
      }
   }
}

Una ejecución de muestra del programa anterior produciría el siguiente resultado:

Producción

1818-11-11 Parses as Wed Nov 11 00:00:00 EST 1818

Durmiendo un rato

Puede dormir durante cualquier período de tiempo, desde un milisegundo hasta la vida útil de su computadora. Por ejemplo, el siguiente programa dormirá durante 3 segundos:

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("Got an exception!"); 
      }
   }
}

Esto producirá el siguiente resultado:

Producción

Sun May 03 18:04:41 GMT 2009
Sun May 03 18:04:51 GMT 2009

Medir el tiempo transcurrido

A veces, es posible que deba medir un punto en el tiempo en milisegundos. Así que reescribamos el ejemplo anterior una vez más:

Ejemplo

import java.util.*;
public class DiffDemo {

   public static void main(String args[]) {
      try {
         long start = System.currentTimeMillis( );
         System.out.println(new Date( ) + "n");
         
         Thread.sleep(5*60*10);
         System.out.println(new Date( ) + "n");
         
         long end = System.currentTimeMillis( );
         long diff = end - start;
         System.out.println("Difference is : " + diff);
      } catch (Exception e) {
         System.out.println("Got an exception!");
      }
   }
}

Esto producirá el siguiente resultado:

Producción

Sun May 03 18:16:51 GMT 2009
Sun May 03 18:16:57 GMT 2009
Difference is : 5993

GregorianCalendar (clase)

GregorianCalendar es una implementación concreta de una clase Calendar que implementa el calendario gregoriano normal con el que está familiarizado. No discutimos la clase Calendar en este tutorial, puede buscar documentación estándar de Java para esto.

los obtener Instancia( ) El método de Calendar devuelve un GregorianCalendar inicializado con la fecha y hora actuales en la zona horaria y la configuración regional predeterminadas. GregorianCalendar define dos campos: AD y BC. Estos representan las dos eras definidas por el calendario gregoriano.

También hay varios constructores para los objetos GregorianCalendar:

No Señor. Constructor y descripción
1

Calendario Gregoriano()

Construye un GregorianCalendar predeterminado utilizando la hora actual en la zona horaria predeterminada con la configuración regional predeterminada.

2

GregorianCalendar (int año, int mes, int fecha)

Construye un GregorianCalendar con la fecha dada establecida en la zona horaria predeterminada con la configuración regional predeterminada.

3

GregorianCalendar (int año, int mes, int fecha, int hora, int minuto)

Construye un GregorianCalendar con la fecha y hora determinadas establecidas para la zona horaria predeterminada con la configuración regional predeterminada.

4

GregorianCalendar (int año, int mes, int fecha, int hora, int minuto, int segundo)

Construye un GregorianCalendar con la fecha y hora determinadas establecidas para la zona horaria predeterminada con la configuración regional predeterminada.

5

GregorianCalendar (Locale aLocale)

Construye un GregorianCalendar basado en la hora actual en la zona horaria predeterminada con el dado …

close