Le package java.util fournit la classe Date pour encapsuler la date et l'heure actuelles. La classe Date fournit deux constructeurs pour instancier les objets Date.
Le premier constructeur initialise l'objet avec la date et l'heure actuelles.
Date( )
Le deuxième constructeur reçoit un paramètre qui est le nombre de millisecondes depuis le 1er janvier 1970.
Date (millisecondes longues)
Une fois l’objet Date créé, vous pouvez appeler les méthodes suivantes.
numéro de série | Méthodes et description |
---|---|
1 | boolean after(Date date) renvoie true si l'objet Date appelant cette méthode est postérieur à la date spécifiée, sinon il renvoie false. |
2 | boolean before(Date date) renvoie true si l'objet Date appelant cette méthode est antérieur à la date spécifiée, sinon il renvoie false. |
3 | Object clone() renvoie une copie de cet objet. |
4 | int compareTo(Date date) compare l'objet Date lorsque cette méthode est appelée avec la date spécifiée. Lorsque les deux sont égaux, 0 est renvoyé. Si l'objet appelant est antérieur à la date spécifiée, un nombre négatif est renvoyé. L'objet appelant renvoie un nombre positif après la date spécifiée. |
5 | int compareTo(Object obj) Si obj est un type Date, l'opération est équivalente à compareTo(Date). Sinon, il lève ClassCastException. |
6 | boolean equals(Object date) renvoie true lorsque l'objet Date appelant cette méthode est égal à la date spécifiée, sinon il renvoie false. |
7 | long getTime( ) renvoie le nombre de millisecondes représenté par cet objet Date depuis le 1er janvier 1970 à 00:00:00 GMT. |
8 | int hashCode() renvoie la valeur du code de hachage de cet objet. |
9 | void setTime(long time) définit l'heure et la date en utilisant le nombre de millisecondes depuis le 1er janvier 1970 00:00:00 GMT. |
10 | String toString() convertit un objet Date en une représentation String et renvoie la chaîne. |
Obtenir la date et l'heure actuelles en Java est très simple. Utilisez la méthode toString() de l'objet Date pour imprimer la date et l'heure actuelles, comme indiqué ci-dessous :
importer java.util.Date ;
classe publique principale{
public static void main(String args[]) {
//Initialiser l'objet Date Date date = new Date();
//Utilisez la fonction toString() pour afficher la date et l'heure System.out.println(date.toString());
}
}
Les résultats de compilation et d'exécution de l'exemple ci-dessus sont les suivants :
Lun. 04 mai 09:51:52 CDT 2013
Java utilise les trois méthodes suivantes pour comparer deux dates :
Utilisez la méthode getTime() pour obtenir deux dates (le nombre de millisecondes depuis le 1er janvier 1970), puis comparez les deux valeurs.
Utilisez les méthodes before(), after() et equals(). Par exemple, si le 12 d’un mois est antérieur au 18, alors new Date(99, 2, 12).before(new Date (99, 2, 18)) renvoie true.
Utilisez la méthode compareTo(), qui est définie par l'interface Comparable, et la classe Date implémente cette interface.
SimpleDateFormat est une classe permettant de formater et d'analyser les dates en fonction des paramètres régionaux. SimpleDateFormat vous permet de choisir n'importe quel format de date et d'heure défini par l'utilisateur sur lequel s'exécuter. Par exemple:
importer java.util.* ;
importer java.text.*;
classe publique principale{
public static void main(String args[]) {
Date dMaintenant = nouvelle Date( );
SimpleDateFormat ft =
nouveau SimpleDateFormat ("E aaaa.MM.jj 'à' hh:mm:ss a zzz");
System.out.println("Date actuelle : " + ft.format(dNow));
}
}
Les résultats de compilation et d'exécution de l'exemple ci-dessus sont les suivants :
Date actuelle : dim. 2004.07.18 à 16:14:09 PDT
La chaîne du modèle d'heure est utilisée pour spécifier le format de l'heure. Dans ce mode, toutes les lettres ASCII sont réservées comme lettres de modèle, définies comme suit :
lettre | décrire | Exemple |
---|---|---|
G | Marque d'époque | ANNONCE |
oui | année à quatre chiffres | 2001 |
M. | mois | Juillet ou 07 |
d | date du mois | 10 |
h | Heures au format AM/PM (1~12) | 12 |
H | Heure du jour (0~23) | vingt-deux |
m | minutes | 30 |
s | secondes | 55 |
S | millisecondes | 234 |
E | jour de la semaine | Mardi |
D | jours de l'année | 360 |
F | Jour de la semaine du mois | 2 (deuxième mercredi de juillet) |
w | semaine de l'année | 40 |
W | Semaine du mois | 1 |
un | Marque AM/PM | MP |
k | Heure de la journée (1~24) | vingt-quatre |
K | Heure au format AM/PM (0~11) | 10 |
z | fuseau horaire | Heure normale de l'Est |
' | délimiteur de texte | Délimiteur |
" | citation unique | ` |
La méthode printf facilite le formatage des heures et des dates. Utilisez le format à deux lettres, qui commence par t et se termine par une lettre du tableau ci-dessous. Par exemple:
importer java.util.Date ;
classe publique principale{
public static void main(String args[]) {
//Initialiser l'objet Date Date date = new Date();
// Utilisez toString() pour afficher la date et l'heure String str = String.format("Date/Heure actuelle : %tc", date );
System.out.printf(str);
}
}
Les résultats de compilation et d'exécution de l'exemple ci-dessus sont les suivants :
Date/heure actuelle : samedi 15 décembre 16:37:57 MST 2012
Si vous devez fournir une date à plusieurs reprises, formater chaque partie de cette manière est un peu compliqué. Par conséquent, une chaîne de format peut être utilisée pour indiquer l'index du paramètre à formater.
L'index doit suivre immédiatement % et doit se terminer par $. Par exemple:
importer java.util.Date ;
classe publique principale{
public static void main(String args[]) {
//Initialiser l'objet Date Date date = new Date();
// Utilisez toString() pour afficher la date et l'heure System.out.printf("%1$s %2$tB %2$td, %2$tY",
"Date d'échéance :", date);
}
}
Les résultats de compilation et d'exécution de l'exemple ci-dessus sont les suivants :
Date d'échéance : 09 février 2004
Alternativement, vous pouvez utiliser l'indicateur <. Il indique que les paramètres précédemment formatés doivent être réutilisés. Par exemple:
importer java.util.Date ;
classe publique principale{
public static void main(String args[]) {
//Initialiser l'objet Date Date date = new Date();
// Afficher l'heure de formatage System.out.printf("%s %tB %<te, %<tY",
"Date d'échéance :", date);
}
}
Les résultats de compilation et d'exécution de l'exemple ci-dessus sont les suivants :
Date d'échéance : 09 février 2004
personnage | décrire | exemple |
c | Date et heure complètes | Lundi 4 mai 09:51:52 CDT 2009 |
F | Date au format ISO 8601 | 2004-02-09 |
D | Date au format américain (mois/jour/année) | 02/09/2004 |
T | 24 heures | 18:05:19 |
r | 12 heures | 18:05:19 |
R. | Heure de 24 heures, hors secondes | 18h05 |
Oui | Année à 4 chiffres (y compris le 0 initial) | 2004 |
oui | 2 derniers chiffres de l'année (y compris le 0 initial) | 04 |
C | Les 2 premiers chiffres de l'année (y compris le 0 en tête) | 20 |
B | nom complet du mois | Février |
b | abréviation du mois | Fév |
n | Mois à 2 chiffres (y compris le 0 initial) | 02 |
d | Date à 2 chiffres (y compris le 0 initial) | 03 |
e | Date à 2 chiffres (sauf le 0 initial) | 9 |
UN | Nom complet de la semaine | Lundi |
un | abréviation de la semaine | Lun |
j | Année à 3 chiffres (y compris le 0 initial) | 069 |
H | Heure à 2 chiffres (y compris le 0 initial), 00 à 23 | 18 |
k | Heure à 2 chiffres (sans compter le 0 initial), 0 à 23 | 18 |
je | Heure à 2 chiffres (y compris le 0 initial), 01 à 12 | 06 |
je | Heure à 2 chiffres (sauf 0 initial), 1 à 12 | 6 |
M. | Minute à 2 chiffres (y compris le 0 initial) | 05 |
S | Secondes à 2 chiffres (y compris les zéros non significatifs) | 19 |
L | 3 chiffres de millisecondes (y compris les 0 en tête) | 047 |
N | Nanoseconde de 9 bits (y compris le 0 initial) | 047000000 |
P. | signe de l'après-midi en majuscule | MP |
p | Signe de l'après-midi minuscule et majuscule | pm |
z | Décalage numérique RFC 822 par rapport à GMT | -0800 |
Z | fuseau horaire | TVP |
s | Nombre de secondes depuis le 01/01/1970 00:00:00 GMT | 1078884319 |
Q | Depuis le 01/01/1970 00:00:00 GMT | 1078884319047 |
Il existe d’autres cours utiles liés à la date et à l’heure. Pour plus de détails, vous pouvez vous référer à la documentation des standards Java.
La classe SimpleDateFormat possède quelques méthodes supplémentaires, notamment parse(), qui tente d'analyser une chaîne en fonction du stockage formaté d'un objet SimpleDateFormat donné. Par exemple:
importer java.util.* ;
importer java.text.*;
classe publique principale{
public static void main(String args[]) {
SimpleDateFormat ft = new SimpleDateFormat ("aaaa-MM-jj");
Entrée de chaîne = args.length == 0 ? "1818-11-11" : args[0];
System.out.print(input + " Analyse comme ");
Date t ;
essayer {
t = ft.parse (entrée);
System.out.println(t);
} catch (ParseException e) {
System.out.println("Non analysable avec " + ft);
}
}
}
Les résultats de compilation et d'exécution de l'exemple ci-dessus sont les suivants :
$javaDateDémo
1818-11-11 Analyse le mercredi 11 novembre 00:00:00 GMT 1818
$ java DateDémo 2007-12-01
2007-12-01 Analyse comme samedi 01 décembre 00:00:00 GMT 2007
Java dormir(sommeil)
Vous pouvez mettre un programme en veille pendant une milliseconde ou aussi longtemps que dure la durée de vie de votre ordinateur. Par exemple, le programme suivant se met en veille pendant 3 secondes :
importer java.util.* ;
classe publique principale{
public static void main(String args[]) {
essayer {
System.out.println(new Date( ) + "n");
Thread.sleep(5*60*10);
System.out.println(new Date( ) + "n");
} attraper (Exception e) {
System.out.println("J'ai une exception !");
}
}
}
Les résultats de compilation et d'exécution de l'exemple ci-dessus sont les suivants :
Dimanche 3 mai 2009 18:04:41 GMT
Dimanche 3 mai 2009 18:04:44 GMT
Un exemple ci-dessous montre comment mesurer un intervalle de temps en millisecondes :
importer java.util.* ;
classe publique principale{
public static void main(String args[]) {
essayer {
démarrage long = System.currentTimeMillis( );
System.out.println(new Date( ) + "n");
Thread.sleep(5*60*10);
System.out.println(new Date( ) + "n");
extrémité longue = System.currentTimeMillis( );
long diff = fin - début ;
System.out.println("La différence est : " + diff);
} attraper (Exception e) {
System.out.println("J'ai une exception !");
}
}
}
Les résultats de compilation et d'exécution de l'exemple ci-dessus sont les suivants :
Dimanche 3 mai 2009 18:16:51 GMT
Dimanche 3 mai 2009 18:16:54 GMT
La différence est : 3050
Nous pouvons maintenant formater et créer un objet date, mais comment pouvons-nous définir et obtenir des parties spécifiques des données de date, telles que l'heure, le jour ou les minutes, et comment pouvons-nous ajouter ou soustraire des valeurs à ces parties de la date ? ? Quoi ? La réponse est d'utiliser la classe Calendar.
La classe Calendar est beaucoup plus puissante que la classe Date et son implémentation est également plus complexe que la classe Date.
La classe Calendar est une classe abstraite qui implémente des objets de sous-classes spécifiques en utilisation réelle. Le processus de création d'objets est transparent pour les programmeurs et doit uniquement être créé à l'aide de la méthode getInstance.
Calendrier c = Calendar.getInstance();//La valeur par défaut est la date actuelle
Pour utiliser la classe Calendar pour représenter une heure spécifique, vous devez d'abord créer un objet Calendar, puis définir les paramètres d'année, de mois et de jour dans l'objet à terminer.
//Créez un objet Calendrier représentant le calendrier du 12 juin 2009 c1 = Calendar.getInstance();
c1.set(2009, 6-1, 12);
Ces constantes sont utilisées dans la classe Calendar pour représenter différentes significations. De nombreuses classes de jdk adoptent en fait cette idée.
constante | décrire |
---|---|
Calendrier.ANNÉE | années |
Calendrier.MOIS | mois |
Calendrier.DATE | date |
Calendrier.DAY_OF_MONTH | La date a exactement la même signification que le champ ci-dessus |
Calendrier.HOUR | heure sur 12 heures |
Calendrier.HOUR_OF_DAY | heure sur 24 heures |
Calendrier.MINUTE | minute |
Calendrier.DEUXIÈME | Deuxième |
Calendrier.DAY_OF_WEEK | jour de la semaine |
Définir les paramètres
comme:
Calendrier c1 = Calendrier.getInstance();
Appel:
ensemble final d'annulation public (année int, mois int, date int)
c1.set(2009, 6 - 1, 12);//Définissez l'année, le mois et le jour de l'objet Calendrier c1 comme : 2009, 5, 12
Utiliser les paramètres de type de champ
Si vous définissez uniquement la valeur d'un certain champ, tel que la date, vous pouvez utiliser la méthode de définition suivante :
ensemble public void (champ int, valeur int)
Fixez la date représentée par l'objet c1 au 10, et toutes les autres valeurs seront recalculées
c1.set(Calendrier.DATE,10);
Définissez l'année représentée par l'objet c1 sur 2008 et toutes les autres valeurs seront recalculées
c1.set(Calendar.YEAR,2008);
La signification d’un autre ensemble d’attributs de champ peut être déduite par analogie.
Ajouter des paramètres
Calendrier c1 = Calendrier.getInstance();
Ajoutez 10 à la date de l'objet c1, qui est la date 10 jours après la date représentée par c1. Toutes les autres valeurs seront recalculées.
c1.add(Calendar.DATE, 10);
Soustrayez 10 de la date de l'objet c1, qui est la date 10 jours avant la date représentée par c1. Toutes les autres valeurs seront recalculées.
c1.add(Calendar.DATE, -10);
La signification de add pour d’autres attributs de champ peut être déduite par analogie.
Calendrier c1 = Calendrier.getInstance();
// Récupère l'année int year = c1.get(Calendar.YEAR);
// Récupère le mois int mois = c1.get(Calendar.MONTH) + 1;
// Récupère la date int date = c1.get(Calendar.DATE);
// Récupère l'heure int hour = c1.get(Calendar.HOUR_OF_DAY);
// Récupère la minute int minute = c1.get(Calendar.MINUTE);
// Récupère le deuxième int second = c1.get(Calendar.SECOND);
// Récupère le jour de la semaine (remarque (ceci est différent de la classe Date) : 1 représente le dimanche, 2 représente la semaine 1, 3 représente le mardi, et ainsi de suite)
int jour = c1.get(Calendar.DAY_OF_WEEK);
La classe Calendar implémente le calendrier grégorien et GregorianCalendar est une implémentation spécifique de la classe Calendar.
La méthode getInstance() de Calendar renvoie un objet GregorianCalendar initialisé par défaut avec les paramètres régionaux et le fuseau horaire actuels. GregorianCalendar définit deux champs : AD et BC. Celles-ci représentent les deux époques définies par le calendrier grégorien.
Vous trouverez ci-dessous plusieurs constructeurs de l'objet GregorianCalendar :
numéro de série | 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 année, int mois, int date) Construit un GregorianCalendar avec les paramètres de date donnés dans le fuseau horaire par défaut avec les paramètres régionaux par défaut |
3 | GregorianCalendar(int année, int mois, int date, int heure, int minute) Construit un GregorianCalendar avec les paramètres de date et d'heure donnés pour le fuseau horaire par défaut avec les paramètres régionaux par défaut. |
4 | GregorianCalendar(int année, int mois, int date, int heure, int minute, int seconde) Construit un GregorianCalendar avec les paramètres de date et d'heure donnés 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. |
7 | 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 une liste de quelques méthodes utiles fournies par la classe GregorianCalendar :
numéro de série | Méthodes et instructions |
1 | void add(int field, int montant) Ajoute la durée spécifiée (signée) au champ de calendrier donné selon les règles du calendrier. |
2 | protected void calculateFields() convertit la valeur UTC en millisecondes en valeur du domaine temporel |
3 | protected void calculateTime() remplace le calendrier et convertit la valeur du domaine temporel en millisecondes UTC |
4 | boolean equals(Object obj) Compare ce GregorianCalendar avec l'objet spécifié. |
5 | int get(int field) obtient la valeur temporelle du champ spécifié |
6 | int getActualMaximum(int field) renvoie la date actuelle, la valeur maximale du champ donné |
7 | int getActualMinimum(int field) renvoie la date actuelle, la valeur minimale du champ donné |
8 | int getGreatestMinimum(int field) Renvoie la valeur minimale la plus élevée pour le champ de calendrier donné dans cette instance de GregorianCalendar. |
9 | Date getGregorianChange() Obtient la date de changement du calendrier grégorien. |
10 | int getLeastMaximum(int field) Renvoie la valeur maximale la plus basse du champ de calendrier donné pour cette instance de GregorianCalendar |
11 | int getMaximum(int field) Renvoie la valeur maximale du champ de calendrier donné pour cette instance de GregorianCalendar. |
12 | Date getTime() obtient l'heure actuelle du calendrier. |
13 | long getTimeInMillis() obtient l'heure actuelle du calendrier représentée par un entier long |
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 du champ de temps donné, sans modifier les champs plus grands. |
19 | void set(int field, int value) définit le champ horaire avec la valeur donnée. |
20 | void set(int année, int mois, int date) définit la valeur de l'année, du mois et du jour. |
vingt-et-un | void set (int année, int mois, int date, int heure, int minute) définit la valeur de l'année, du mois, du jour, de l'heure et des minutes. |
vingt-deux | void set (int année, int mois, int date, int heure, int minute, int seconde) définit la valeur de l'année, du mois, du jour, de l'heure, des minutes et des secondes. |
vingt-trois | void setGregorianChange(Date date) définit la date de changement de GregorianCalendar. |
vingt-quatre | void setTime(Date date) définit l'heure actuelle du calendrier avec la date donnée. |
25 | void setTimeInMillis(long millis) définit l'heure actuelle du calendrier avec les longues millisecondes données. |
26 | void setTimeZone(TimeZone value) Définit le fuseau horaire actuel avec la valeur de fuseau horaire donnée. |
27 | String toString() renvoie une chaîne représentant le calendrier. |
importer java.util.* ;
classe publique GregorianCalendarDemo {
public static void main(String args[]) {
Chaîne mois[] = {
"Jan", "Février", "Mars", "Avril",
"Mai", "Juin", "Juillet", "Août",
"Sep", "Oct", "Nov", "Dec"} ;
année entière ;
// Initialiser le calendrier grégorien // Utiliser l'heure et la date actuelles // Par défaut, l'heure et le fuseau horaire locaux GregorianCalendar gcalendar = new GregorianCalendar();
// Afficher les informations d'heure et de date actuelles System.out.print("Date: ");
System.out.print(mois[gcalendar.get(Calendar.MONTH)]);
System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");
System.out.println(année = gcalendar.get(Calendar.YEAR));
System.out.print("Heure : ");
System.out.print(gcalendar.get(Calendar.HOUR) + ":");
System.out.print(gcalendar.get(Calendar.MINUTE) + ":");
System.out.println(gcalendar.get(Calendar.SECOND));
// Teste si l'année en cours est une année bissextile if(gcalendar.isLeapYear(year)) {
System.out.println("L'année en cours est une année bissextile");
}
autre {
System.out.println("L'année en cours n'est pas une année bissextile");
}
}
}
Les résultats de compilation et d'exécution de l'exemple ci-dessus sont les suivants :
Date : 22 avril 2009
Heure : 11:25:27
L'année en cours n'est pas une année bissextile
Pour une liste complète des classes Calender, vous pouvez vous référer à la documentation Java standard.