Java - Date et heure

Java fournit le Date classe disponible dans java.util package, cette classe encapsule la date et l'heure actuelles.

La classe Date prend en charge deux constructeurs comme indiqué dans le tableau suivant.

Sr.No. Constructeur et description
1

Date( )

Ce constructeur initialise l'objet avec la date et l'heure actuelles.

2

Date(long millisec)

Ce constructeur accepte un argument égal au nombre de millisecondes écoulées depuis le 1er janvier 1970 à minuit.

Voici les méthodes de la classe de date.

Sr.No. Méthode et description
1

boolean after(Date date)

Renvoie true si l'objet Date appelant contient une date postérieure à celle spécifiée par date, sinon, elle renvoie false.

2

boolean before(Date date)

Renvoie true si l'objet Date appelant contient une date antérieure à celle spécifiée par date, sinon, elle renvoie false.

3

Object clone( )

Duplique l'objet Date appelant.

4

int compareTo(Date date)

Compare la valeur de l'objet appelant avec celle de date. Renvoie 0 si les valeurs sont égales. Renvoie une valeur négative si l'objet appelant est antérieur à la date. Renvoie une valeur positive si l'objet appelant est postérieur à la date.

5

int compareTo(Object obj)

Fonctionne de la même manière que compareTo (Date) si obj est de classe Date. Sinon, il lève une ClassCastException.

6

boolean equals(Object date)

Renvoie true si l'objet Date appelant contient la même heure et la même date que celles spécifiées par date, sinon, il renvoie false.

sept

long getTime( )

Renvoie le nombre de millisecondes qui se sont écoulées depuis le 1er janvier 1970.

8

int hashCode( )

Renvoie un code de hachage pour l'objet appelant.

9

void setTime(long time)

Définit l'heure et la date spécifiées par time, qui représente un temps écoulé en millisecondes à partir du 1er janvier 1970 à minuit.

dix

String toString( )

Convertit l'objet Date appelant en une chaîne et renvoie le résultat.

Obtenir la date et l'heure actuelles

C'est une méthode très simple pour obtenir la date et l'heure actuelles en Java. Vous pouvez utiliser un objet Date simple avec la méthode toString () pour imprimer la date et l'heure actuelles comme suit -

Exemple

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

Cela produira le résultat suivant -

Production

on May 04 09:51:52 CDT 2009

Comparaison des dates

Voici les trois façons de comparer deux dates -

  • Vous pouvez utiliser getTime () pour obtenir le nombre de millisecondes qui se sont écoulées depuis minuit, le 1er janvier 1970, pour les deux objets, puis comparer ces deux valeurs.

  • Vous pouvez utiliser les méthodes before (), after () et equals (). Parce que le 12 du mois vient avant le 18, par exemple, new Date (99, 2, 12) .before (new Date (99, 2, 18)) renvoie true.

  • Vous pouvez utiliser la méthode compareTo (), qui est définie par l'interface Comparable et implémentée par Date.

Formatage de la date à l'aide de SimpleDateFormat

SimpleDateFormat est une classe concrète pour le formatage et l'analyse des dates d'une manière sensible aux paramètres régionaux. SimpleDateFormat vous permet de commencer par choisir les modèles définis par l'utilisateur pour le formatage de la date et de l'heure.

Exemple

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

Cela produira le résultat suivant -

Production

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

Codes de format de format de date simples

Pour spécifier le format d'heure, utilisez une chaîne de modèle d'heure. Dans ce modèle, toutes les lettres ASCII sont réservées en tant que lettres de modèle, qui sont définies comme suit -

Personnage La description Exemple
g Désignation de l'époque UN D
y L'année en quatre chiffres 2001
M Mois dans l'année Juillet ou 07
Jour dans le mois dix
h Heure en AM / PM (1 ~ 12) 12
H Heure dans la journée (0 ~ 23) 22
m Minute en heure 30
s Seconde en minute 55
S Milliseconde 234
E Jour en semaine Mardi
Jour dans l'année 360
F Jour de la semaine dans le mois 2 (deuxième mercredi de juillet)
w Semaine dans l'année 40
W Semaine en mois 1
une Marqueur AM / PM PM
k Heure dans la journée (1 ~ 24) 24
K Heure en AM / PM (0 ~ 11) dix
z Fuseau horaire Heure normale de l'Est
' Échapper pour le texte Délimiteur
" Simple citation »

Formatage de la date à l'aide de printf

Le formatage de la date et de l'heure peut être effectué très facilement en utilisant printfméthode. Vous utilisez un format à deux lettres, commençant part et se terminant par l'une des lettres du tableau comme indiqué dans le code suivant.

Exemple

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

Cela produira le résultat suivant -

Production

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

Ce serait un peu idiot si vous deviez fournir la date plusieurs fois pour formater chaque partie. Pour cette raison, une chaîne de format peut indiquer l'index de l'argument à mettre en forme.

L'index doit suivre immédiatement le% et il doit être terminé par un $.

Exemple

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

Cela produira le résultat suivant -

Production

Due date: February 09, 2004

Vous pouvez également utiliser l'indicateur <. Il indique que le même argument que dans la spécification de format précédente doit être utilisé à nouveau.

Exemple

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

Cela produira le résultat suivant -

Production

Due date: February 09, 2004

Caractères de conversion de date et d'heure

Personnage La description Exemple
c Date et heure complètes Lun 04 mai 09:51:52 CDT 2009
F Date ISO 8601 09/02/2004
Date au format US (mois / jour / année) 02/09/2004
T 24 heures 18:05:19
r 12 heures 18h05h19
R 24 heures, pas de seconde 18h05
Oui Année à quatre chiffres (avec zéros non significatifs) 2004
y Deux derniers chiffres de l'année (avec des zéros non significatifs) 04
C Deux premiers chiffres de l'année (avec des zéros non significatifs) 20
B Nom complet du mois février
b Nom du mois abrégé fév
m Mois à deux chiffres (avec zéros non significatifs) 02
Jour à deux chiffres (avec zéros non significatifs) 03
e Jour à deux chiffres (sans zéros non significatifs) 9
UNE Nom complet du jour de la semaine Lundi
une Nom abrégé du jour de la semaine lun
j Jour de l'année à trois chiffres (avec zéros non significatifs) 069
H Heure à deux chiffres (avec zéros non significatifs), entre 00 et 23 18
k Heure à deux chiffres (sans zéros non significatifs), entre 0 et 23 18
je Heure à deux chiffres (avec zéros non significatifs), entre 01 et 12 06
l Heure à deux chiffres (sans zéros non significatifs), entre 1 et 12 6
M Minutes à deux chiffres (avec zéros non significatifs) 05
S Secondes à deux chiffres (avec zéros non significatifs) 19
L Millisecondes à trois chiffres (avec zéros non significatifs) 047
N Nanosecondes à neuf chiffres (avec zéros non significatifs) 047000000
P Marqueur du matin ou de l'après-midi en majuscules PM
p Marqueur du matin ou de l'après-midi en minuscules pm
z Décalage numérique RFC 822 par rapport à GMT -0800
Z Fuseau horaire TVP
s Secondes depuis le 01/01/1970 à 00:00:00 GMT 1078884319
Q Millisecondes depuis 1970-01-01 00:00:00 GMT 1078884319047

Il existe d'autres classes utiles liées à la date et à l'heure. Pour plus de détails, vous pouvez vous référer à la documentation Java Standard.

Analyse des chaînes en dates

La classe SimpleDateFormat a quelques méthodes supplémentaires, notamment parse (), qui essaie d'analyser une chaîne en fonction du format stocké dans l'objet SimpleDateFormat donné.

Exemple

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(t); 
      } catch (ParseException e) { 
         System.out.println("Unparseable using " + ft); 
      }
   }
}

Un exemple d'exécution du programme ci-dessus produirait le résultat suivant -

Production

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

Dormir pendant un moment

Vous pouvez dormir pendant n'importe quelle période allant d'une milliseconde à la durée de vie de votre ordinateur. Par exemple, le programme suivant dormirait pendant 3 secondes -

Exemple

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

Cela produira le résultat suivant -

Production

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

Mesure du temps écoulé

Parfois, vous devrez peut-être mesurer le point dans le temps en millisecondes. Réécrivons donc à nouveau l'exemple ci-dessus -

Exemple

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

Cela produira le résultat suivant -

Production

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

Classe GregorianCalendar

GregorianCalendar est une implémentation concrète d'une classe Calendar qui implémente le calendrier grégorien normal avec lequel vous êtes familier. Nous n'avons pas discuté de la classe Calendar dans ce tutoriel, vous pouvez consulter la documentation Java standard pour cela.

le getInstance( )La méthode Calendar renvoie un GregorianCalendar initialisé avec la date et l'heure actuelles dans les paramètres régionaux et le fuseau horaire par défaut. GregorianCalendar définit deux champs: AD et BC. Ceux-ci représentent les deux époques définies par le calendrier grégorien.

Il existe également plusieurs constructeurs pour les objets GregorianCalendar -

Sr.No. Constructeur et description
1

GregorianCalendar()

Construit un GregorianCalendar par défaut en utilisant l'heure actuelle dans le fuseau horaire par défaut avec les paramètres régionaux par défaut.

2

GregorianCalendar(int year, int month, int date)

Construit un GregorianCalendar avec la date donnée définie dans le fuseau horaire par défaut avec les paramètres régionaux par défaut.

3

GregorianCalendar(int year, int month, int date, int hour, int minute)

Construit un GregorianCalendar avec la date et l'heure données définies pour le fuseau horaire par défaut avec les paramètres régionaux par défaut.

4

GregorianCalendar(int year, int month, int date, int hour, int minute, int second)

Construit un GregorianCalendar avec la date et l'heure données définies pour le fuseau horaire par défaut avec les paramètres régionaux par défaut.

5

GregorianCalendar(Locale aLocale)

Construit un GregorianCalendar basé sur l'heure actuelle dans le fuseau horaire par défaut avec les paramètres régionaux donnés.

6

GregorianCalendar(TimeZone zone)

Construit un GregorianCalendar basé sur l'heure actuelle dans le fuseau horaire donné avec les paramètres régionaux par défaut.

sept

GregorianCalendar(TimeZone zone, Locale aLocale)

Construit un GregorianCalendar basé sur l'heure actuelle dans le fuseau horaire donné avec les paramètres régionaux donnés.

Voici la liste de quelques méthodes de support utiles fournies par la classe GregorianCalendar -

Sr.No. Méthode et description
1

void add(int field, int amount)

Ajoute la durée spécifiée (signée) au champ d'heure donné, en fonction des règles du calendrier.

2

protected void computeFields()

Convertit l'UTC en millisecondes en valeurs de champ d'heure.

3

protected void computeTime()

Overrides Calendar Convertit les valeurs des champs horaires en UTC en millisecondes.

4

boolean equals(Object obj)

Compare ce GregorianCalendar à une référence d'objet.

5

int get(int field)

Obtient la valeur d'un champ d'heure donné.

6

int getActualMaximum(int field)

Renvoie la valeur maximale que ce champ pourrait avoir, compte tenu de la date actuelle.

sept

int getActualMinimum(int field)

Renvoie la valeur minimale que ce champ pourrait avoir, compte tenu de la date actuelle.

8

int getGreatestMinimum(int field)

Renvoie la valeur minimale la plus élevée pour le champ donné si elle varie.

9

Date getGregorianChange()

Obtient la date de modification du calendrier grégorien.

dix

int getLeastMaximum(int field)

Renvoie la valeur maximale la plus basse pour le champ donné si elle varie.

11

int getMaximum(int field)

Renvoie la valeur maximale du champ donné.

12

Date getTime()

Obtient l'heure actuelle de ce calendrier.

13

long getTimeInMillis()

Obtient l'heure actuelle de ce calendrier comme une longue.

14

TimeZone getTimeZone()

Obtient le fuseau horaire.

15

int getMinimum(int field)

Renvoie la valeur minimale du champ donné.

16

int hashCode()

Remplace hashCode.

17

boolean isLeapYear(int year)

Détermine si l'année donnée est une année bissextile.

18

void roll(int field, boolean up)

Ajoute ou soustrait (haut / bas) une seule unité de temps sur le champ de temps donné sans modifier les champs plus grands.

19

void set(int field, int value)

Définit le champ d'heure avec la valeur donnée.

20

void set(int year, int month, int date)

Définit les valeurs des champs année, mois et date.

21

void set(int year, int month, int date, int hour, int minute)

Définit les valeurs des champs année, mois, date, heure et minute.

22

void set(int year, int month, int date, int hour, int minute, int second)

Définit les valeurs des champs année, mois, date, heure, minute et seconde.

23

void setGregorianChange(Date date)

Définit la date de modification GregorianCalendar.

24

void setTime(Date date)

Définit l'heure actuelle de ce calendrier avec la date donnée.

25

void setTimeInMillis(long millis)

Définit l'heure actuelle de ce calendrier à partir de la valeur longue donnée.

26

void setTimeZone(TimeZone value)

Définit le fuseau horaire avec la valeur de fuseau horaire donnée.

27

String toString()

Renvoie une représentation sous forme de chaîne de ce calendrier.

Exemple

import java.util.*;
public class GregorianCalendarDemo {

   public static void main(String args[]) {
      String months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", 
         "Oct", "Nov", "Dec"};
      
      int year;
      // Create a Gregorian calendar initialized
      // with the current date and time in the
      // default locale and timezone.
      
      GregorianCalendar gcalendar = new GregorianCalendar();
      
      // Display current time and date information.
      System.out.print("Date: ");
      System.out.print(months[gcalendar.get(Calendar.MONTH)]);
      System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");
      System.out.println(year = gcalendar.get(Calendar.YEAR));
      System.out.print("Time: ");
      System.out.print(gcalendar.get(Calendar.HOUR) + ":");
      System.out.print(gcalendar.get(Calendar.MINUTE) + ":");
      System.out.println(gcalendar.get(Calendar.SECOND));

      // Test if the current year is a leap year
      if(gcalendar.isLeapYear(year)) {
         System.out.println("The current year is a leap year");
      }else {
         System.out.println("The current year is not a leap year");
      }
   }
}

Cela produira le résultat suivant -

Production

Date: Apr 22 2009
Time: 11:25:27
The current year is not a leap year

Pour une liste complète des constantes disponibles dans la classe Calendar, vous pouvez consulter la documentation Java standard.