Date et heure Java
Le package java.util fournit la classe Date pour encapsuler la date et l'heure actuelles. La classe Date fournit deux constructeurs pour instancier des objets Date.
Le premier constructeur initialise l'objet en utilisant 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(long millisec)
Une fois l'objet Date créé, vous pouvez appeler la méthode suivante.
Numéro de série | Méthode et description |
---|---|
1 | booléen après(Date date) Si l'objet Date appelant cette méthode renvoie vrai après la date spécifiée, sinon il renvoie faux. |
2 | booléen avant(Date date) Si l'objet Date appelant cette méthode renvoie vrai avant la date spécifiée, sinon il renvoie faux. |
3 | Clonage d'objet( ) Renvoie une copie de cet objet. |
4 | int comparerÀ(Date date) Compare l'objet Date et la date spécifiée lorsque cette méthode est appelé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 comparerTo(Object obj) Si obj est de type Date, l’opération est équivalente à compareTo(Date). Sinon, il lève ClassCastException. |
6 | booléen égal(Date de l'objet) Renvoie vrai lorsque l'objet Date appelant cette méthode est égal à la date spécifiée, sinon il renvoie faux. |
7 | long getTime( ) Renvoie le nombre de millisecondes représentées 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 (longtemps) Réglez l'heure et la date en millisecondes depuis le 1er janvier 1970 à 00:00:00 GMT. |
10 | Chaîne versChaîne( ) Convertit un objet Date en une représentation String et renvoie la chaîne. |
Obtenir la date et l'heure actuelles
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 :
import java.util.Date; public class DateDemo { public static void main(String args[]) { // 初始化 Date 对象 Date date = new Date(); // 使用 toString() 函数显示日期时间 System.out.println(date.toString()); } }
Les résultats de compilation et d'exécution de l'exemple ci-dessus sont les suivants :
Mon May 04 09:51:52 CDT 2013
Comparaison de dates
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.
Formatage des dates à l'aide de SimpleDateFormat
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 :
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)); } }
Les résultats de compilation et d'exécution de l'exemple ci-dessus sont les suivants :
Current Date: Sun 2004.07.18 at 04:14:09 PM PDT
Encodage au format Simple DateFormat
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 | Description | Exemple |
---|---|---|
G | Marque d'époque | AD |
y | Année à quatre chiffres | 2001 |
M | Mois | Juillet ou 07 |
d | Jour du mois | 10 |
h | Heures au format A.M./P.M. (1~12) | 12 |
H | Heure de la journée (0~23) | 22 |
m | Nombre de minutes | 30 |
s | Secondes | 55 |
S | Nombre de millisecondes | 234 |
E | Jour de la semaine | Mardi |
D | Jours de l'année | 360 |
F | Jour de la semaine | 2 (deuxième mercredi de juillet) |
w | Semaine de l'année | 40 |
W | Semaine du mois | 1 |
a | Marque A.M./P.M. | MP |
k | Heure de la journée (1~24) | 24 |
K | Heure au format A.M./P.M. (0~11) | 10 |
z | Fuseau horaire | Heure normale de l'Est |
' | Délimiteur de texte | Délimiteur |
" | Guillemets simples | ` |
Utilisez printf pour formater les dates
La méthode printf facilite le formatage de l'heure et de la date. Utilisez le format à deux lettres, qui commence par t et se termine par une lettre du tableau ci-dessous. Par exemple :
import java.util.Date; public class DateDemo { public static void main(String args[]) { // 初始化 Date 对象 Date date = new Date(); // 使用toString()显示日期和时间 String str = String.format("Current Date/Time : %tc", date ); System.out.printf(str); } }
Les résultats de compilation et d'exécution de l'exemple ci-dessus sont les suivants :
Current Date/Time : Sat Dec 15 16:37:57 MST 2012
Si vous devez fournir la date à plusieurs reprises , utilisez cette méthode pour le formater. Chaque partie est un peu plus compliquée. Par conséquent, une chaîne de format peut être utilisée pour indiquer l'index du paramètre à formater.
L'index doit immédiatement suivre % et doit se terminer par $. Par exemple :
import java.util.Date; public class DateDemo { public static void main(String args[]) { // 初始化 Date 对象 Date date = new Date(); // 使用toString()显示日期和时间 System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date); } }
Les résultats de compilation et d'exécution de l'exemple ci-dessus sont les suivants :
Due date: February 09, 2004
Ou, vous pouvez utiliser le < signe. Il indique que les paramètres précédemment formatés doivent être réutilisés. Par exemple :
import java.util.Date; public class DateDemo { public static void main(String args[]) { // 初始化 Date 对象 Date date = new Date(); // 显示格式化时间 System.out.printf("%s %tB %<te, %<tY", "Due date:", date); } }
Les résultats de compilation et d'exécution de l'exemple ci-dessus sont les suivants :
Due date: February 09, 2004
Caractères de conversion de date et d'heure
Caractères | Description | Exemple |
c | Date et heure complètes | Lun 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 | 24 heures, hors secondes | 18h05 |
Y | Année à 4 chiffres (y compris le 0 en tête) | 2004 |
y | Les 2 derniers chiffres de l'année (y compris le 0 en tête) | 04 |
C | Les 2 premiers chiffres de l'année (y compris le 0 en tête) | 20 |
B | Le nom complet du mois | Février |
b | Abréviation du mois | Février |
n | Mois à 2 chiffres (y compris le 0 initial) | 02 |
d | Jour à 2 chiffres (y compris le 0 initial) | 03 |
e | Jour à 2 chiffres (hors 0 initial) | 9 |
A | Nom complet de la semaine | Lundi |
a | 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), de 00 à 23 | 18 |
k | Heure à 2 chiffres (hors 0 initial), 0 à 23 | 18 |
Je | Heure à 2 chiffres (y compris le 0 initial), 01 à 12 | 06 |
l | Heure à 2 chiffres (hors 0 initial), 1 à 12 | 6 |
M | Minute à 2 chiffres (y compris le 0 initial) | 05 |
S | Secondes à 2 chiffres (y compris le 0 initial) | 19 |
L | Millisecondes à 3 chiffres (y compris le 0 initial) | 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 | mp |
z | Décalage numérique RFC 822 par rapport à GMT | -0800 |
Z | Fuseau horaire | PST |
s | Nombre de secondes depuis le 01/01/1970 00:00:00 GMT | 1078884319 |
Q | Depuis le 01/01/1970 00:00:00 GMT, c'est merveilleux | 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.
Analyser une chaîne en tant qu'heure
La classe SimpleDateFormat possède des méthodes supplémentaires, notamment parse(), qui tente d'analyser la chaîne en fonction du stockage formaté de l'objet SimpleDateFormat donné. . Par 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); } } }
Les résultats de compilation et d'exécution de l'exemple ci-dessus sont les suivants :
$ java DateDemo 1818-11-11 Parses as Wed Nov 11 00:00:00 GMT 1818 $ java DateDemo 2007-12-01 2007-12-01 Parses as Sat Dec 01 00:00:00 GMT 2007
Java sleep (sleep)
sleep() met le courant thread dans un état stagnant (bloque le thread actuel), le but de renoncer à l'utilisation du CPU est d'empêcher le thread actuel d'occuper les ressources CPU obtenues par le processus seul, afin de laisser un certain temps aux autres threads à exécuter.
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 va dormir pendant 3 secondes :
import java.util.*; public class SleepDemo { public static void main(String args[]) { try { System.out.println(new Date( ) + "\n"); Thread.sleep(1000*3); // 休眠3秒 System.out.println(new Date( ) + "\n"); } catch (Exception e) { System.out.println("Got an exception!"); } } }
Les résultats de compilation et d'exécution de l'exemple ci-dessus sont les suivants :
Thu Sep 17 10:20:30 CST 2015 Thu Sep 17 10:20:33 CST 2015
Temps de mesure
L'exemple suivant montre comment mesurer l'intervalle de temps (en millisecondes) :
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!"); } } }
La compilation et l'exécution Les résultats de l'exemple ci-dessus sont les suivants :
Fri Jan 08 09:48:47 CST 2016 Fri Jan 08 09:48:50 CST 2016 Difference is : 3019
Classe Calendrier
Nous sommes maintenant capables de formater et de créer un objet date, mais comment pouvons-nous définir et obtenir des parties spécifiques de l'objet date ? des données de date, telles que l'heure, le jour ou les minutes ? Comment ajouter ou soustraire des valeurs de ces parties de la date ? 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 ne doit être créé qu'à l'aide de la méthode getInstance.
Créez un objet Calendrier représentant la date actuelle du système
Calendar c = Calendar.getInstance();//默认是当前日期
Créez un objet Calendrier pour une date spécifiée
Pour utiliser la classe Calendrier pour représenter une heure spécifique, vous Vous devez d'abord créer un objet Calendrier, puis définir les paramètres de l'année, du mois et du jour dans l'objet pour terminer.
//创建一个代表2009年6月12日的Calendar对象 Calendar c1 = Calendar.getInstance(); c1.set(2009, 6 - 1, 12);
Type de champ d'objet de classe Calendar
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
常量 | 描述 |
---|---|
Calendar.YEAR | 年份 |
Calendar.MONTH | 月份 |
Calendar.DATE | 日期 |
Calendar.DAY_OF_MONTH | 日期,和上面的字段意义完全相同 |
Calendar.HOUR | 12小时制的小时 |
Calendar.HOUR_OF_DAY | 24小时制的小时 |
Calendar.MINUTE | 分钟 |
Calendar.SECOND | 秒 |
Calendar.DAY_OF_WEEK | 星期几 |
Paramètres des informations sur les objets de classe de calendrier
Définir les paramètres
Par exemple :
Calendar c1 = Calendar.getInstance();
Appel :
public final void set(int year,int month,int date)
c1.set(2009, 6 - 1, 12);//把Calendar对象c1的年月日分别设这为:2009、6、12
Utiliser les types de champs Définition de
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 :
public void set(int field,int value)
Définissez la date représentée par l'objet c1 au 10, et toutes les autres valeurs seront recalculées
c1.set(Calendar.DATE,10);
Définissez l'année représentée par l'objet c1 sur 2008, et toutes les autres valeursseront recalculées
c1.set(Calendar.YEAR,2008);
La signification des autres attributs de champ sets se déduit par analogie
Ajouter un paramètre
Calendar c1 = Calendar.getInstance();
Ajouter 10 à la date de l'objet c1, c'est-à-dire que c1 est exprimé comme la date 10 jours plus tard, et toutes les autres valeursseront recalculées
c1.add(Calendar.DATE, 10);
Soustrayez 10 de la date de l'objet c1, c'est-à-dire que c1 est exprimé comme la date d'il y a 10 jours, et toutes les autres valeursseront recalculé
<pre>c1.add(Calendar.DATE, -10);
La signification de add pour les autres attributs de champ se déduit de la même manière
Acquisition des informations sur l'objet de la classe Calendar
Calendar c1 = Calendar.getInstance(); // 获得年份 int year = c1.get(Calendar.YEAR); // 获得月份 int month = c1.get(Calendar.MONTH) + 1; // 获得日期 int date = c1.get(Calendar.DATE); // 获得小时 int hour = c1.get(Calendar.HOUR_OF_DAY); // 获得分钟 int minute = c1.get(Calendar.MINUTE); // 获得秒 int second = c1.get(Calendar.SECOND); // 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推) int day = c1.get(Calendar.DAY_OF_WEEK);
Classe GregorianCalendar
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.
Voici plusieurs méthodes de construction de l'objet GregorianCalendar :
序号 | 构造函数和说明 |
1 | GregorianCalendar() 在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。 |
2 | GregorianCalendar(int year, int month, int date) 在具有默认语言环境的默认时区内构造一个带有给定日期设置的 GregorianCalendar |
3 | GregorianCalendar(int year, int month, int date, int hour, int minute) 为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。 |
4 | GregorianCalendar(int year, int month, int date, int hour, int minute, int second) 为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。 |
5 | GregorianCalendar(Locale aLocale) 在具有给定语言环境的默认时区内构造一个基于当前时间的 GregorianCalendar。 |
6 | GregorianCalendar(TimeZone zone) 在具有默认语言环境的给定时区内构造一个基于当前时间的 GregorianCalendar。 |
7 | GregorianCalendar(TimeZone zone, Locale aLocale) 在具有给定语言环境的给定时区内构造一个基于当前时间的 GregorianCalendar。 |
Voici une liste de quelques méthodes utiles fournies par la classe GregorianCalendar :
Numéro de série | Méthode et instructions |
1 | annuler l'ajout (champ int, montant int) Ajoute la durée spécifiée (signée) au champ de calendrier donné conformément aux règles du calendrier. |
2 | protected void calculateFields() Convertir la valeur UTC en millisecondes en valeur de domaine temporel |
3 | protected void calculateTime() Remplacez le calendrier et convertissez la valeur du domaine temporel en valeur UTC en millisecondes |
4 | booléen égal(Object obj) Compare ce GregorianCalendar à l'objet spécifié. |
5 | int get(champ int) Obtenez la valeur temporelle du champ spécifié |
6 | int getActualMaximum(champ int) Renvoie la date actuelle, la valeur maximale du champ donné |
7 | int getActualMinimum(champ int) Renvoie la date actuelle, la valeur minimale du champ donné |
8 | int getGreatestMinimum(champ int) Renvoie la valeur minimale la plus élevée pour le champ de calendrier donné dans cette instance de GregorianCalendar. |
9 | Date getGregorianChange() Obtenez la date de changement du calendrier grégorien. |
10 | int getLeastMaximum(champ int) Renvoie la valeur maximale la plus basse pour le champ de calendrier donné dans cette instance de GregorianCalendar |
11 | int getMaximum(champ int) Renvoie la valeur maximale du champ de calendrier donné pour cette instance de GregorianCalendar. |
12 | Date getTime() Obtenez l'heure actuelle du calendrier. |
13 | long getTimeInMillis() Obtenez l'heure actuelle du calendrier exprimée sous forme d'entier long |
14 | TimeZone getTimeZone() Obtenez le fuseau horaire. |
15 | int getMinimum(champ int) Renvoie la valeur minimale du champ donné. |
& |