Java - Date et heure
Java fournit la 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 | |
2 |
Voici les méthodes de la classe de date.
Sr.No. | Méthode et description |
---|---|
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 |
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 simple objet Date avec toString() méthode pour imprimer la date et l'heure actuelles comme suit −
Exemple
Démo en directimport 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 −
Sortie
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( ). Comme le 12 du mois précède 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 n'importe quel modèle défini par l'utilisateur pour le formatage de la date et de l'heure.
Exemple
Démo en directimport 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 −
Sortie
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 −
Caractère | Description | Exemple |
---|---|---|
G | Indicateur d'ère | ANNONCE |
y | Année en quatre chiffres | 2001 |
M | Mois de l'année | Juillet ou 07 |
d | Jour du mois | 10 |
h | Heure en A.M./P.M. (1~12) | 12 |
H | Heure du jour (0~23) | 22 |
m | Minute en heure | 30 |
s | Seconde en minute | 55 |
S | Milliseconde | 234 |
E | Jour de la semaine | mardi |
D | Jour de l'année | 360 |
F | Jour de la semaine du mois | 2 (deuxième mer. de juillet) |
w | Semaine de l'année | 40 |
W | Semaine du mois | 1 |
un | AM/PM marqueur | MP |
k | Heure dans la journée (1~24) | 24 |
K | Heure en A.M./P.M. (0~11) | 10 |
z | Fuseau horaire | Heure normale de l'Est |
' | Échappement pour le texte | Séparateur |
" | Avis simples | ` |
Formatage de la date à l'aide de printf
Le formatage de la date et de l'heure peut être fait très facilement en utilisant printf méthode. Vous utilisez un format à deux lettres, commençant par t et se terminant par l'une des lettres du tableau comme indiqué dans le code suivant.
Exemple
Démo en directimport 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 −
Sortie
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 à formater.
L'index doit suivre immédiatement le % et se terminer par un $.
Exemple
Démo en directimport 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 −
Sortie
Due date: February 09, 2004
Alternativement, vous pouvez utiliser le drapeau <. Cela indique que le même argument que dans la spécification de format précédente doit être utilisé à nouveau.
Exemple
Démo en directimport 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 −
Sortie
Due date: February 09, 2004
Caractères de conversion de date et d'heure
Caractère | Description | Exemple |
---|---|---|
c | Date et heure complètes | Lun 04 mai 09:51:52 CDT 2009 |
F | Date ISO 8601 | 2004-02-09 |
D | États-Unis date formatée (mois/jour/année) | 02/09/2004 |
T | Heure de 24 heures | 18:05:19 |
r | Heure de 12 heures | 18:05:19 |
R | Heure de 24 heures, pas de secondes | 18:05 |
O | Année à quatre chiffres (avec des 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 abrégé du mois | février |
m | Mois à deux chiffres (avec des zéros non significatifs) | 02 |
d | Jour à deux chiffres (avec des zéros non significatifs) | 03 |
e | Jour à deux chiffres (sans zéros non significatifs) | 9 |
A | Nom complet du jour de la semaine | Lundi |
un | Nom abrégé du jour de la semaine | Lun |
j | Jour de l'année à trois chiffres (avec des zéros non significatifs) | 069 |
H | Heure à deux chiffres (avec des 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 des 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 des zéros non significatifs) | 05 |
S | Secondes à deux chiffres (avec des zéros non significatifs) | 19 |
L | Millisecondes à trois chiffres (avec des zéros non significatifs) | 047 |
N | Nanosecondes à neuf chiffres (avec des zéros non significatifs) | 047000000 |
P | Marqueur majuscule du matin ou de l'après-midi | 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 | PST |
s | Secondes depuis le 1970-01-01 00:00:00 GMT | 1078884319 |
Q | Millisecondes depuis le 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 possède quelques méthodes supplémentaires, notamment parse(), qui tente d'analyser une chaîne en fonction du format stocké dans l'objet SimpleDateFormat donné.
Exemple
Démo en directimport 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 −
Sortie
1818-11-11 Parses as Wed Nov 11 00:00:00 EST 1818
Dormir un moment
Vous pouvez dormir pendant n'importe quelle période allant d'une milliseconde jusqu'à la durée de vie de votre ordinateur. Par exemple, le programme suivant dormirait pendant 3 secondes −
Exemple
Démo en directimport 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 −
Sortie
Sun May 03 18:04:41 GMT 2009 Sun May 03 18:04:51 GMT 2009
Mesurer le temps écoulé
Parfois, vous devrez peut-être mesurer un point dans le temps en millisecondes. Alors réécrivons l'exemple ci-dessus une fois de plus −
Exemple
Démo en directimport 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 −
Sortie
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 abordé la classe Calendar dans ce didacticiel, 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. Celles-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 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 |
Voici la liste des quelques méthodes de support utiles fournies par la classe GregorianCalendar −
Sr.No. | Méthode et description |
---|---|
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 |
Exemple
Démo en directimport 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 −
Sortie
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 vous référer à la documentation Java standard.
Java