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 |
ré | 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 |
ré | 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 |
ré | 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 |
ré | 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.