Maison > Java > javaDidacticiel > Opérations de date courantes en Java (acquisition de valeur, conversion, addition, soustraction, comparaison)

Opérations de date courantes en Java (acquisition de valeur, conversion, addition, soustraction, comparaison)

高洛峰
Libérer: 2017-01-20 16:33:19
original
1437 Les gens l'ont consulté

Dans le processus de développement de Java, il est inévitable de s'embrouiller avec le type Date. Je vais résumer les opérations liées aux dates fréquemment utilisées dans le projet JDK version 1.7. pour me lever, bouger et préparer une tasse de café, ce sera génial, hehe. Bien entendu, je ne propose que des solutions réalisables et ne garantit pas les meilleures pratiques. Les discussions sont les bienvenues.

1. Valeur de date

À l'ère de l'ancienne version du JDK, de nombreux codes utilisaient la classe java.util.Date pour la valeur de date, mais car La classe Date n'est pas pratique pour l'internationalisation. En fait, à partir du JDK1.1, il est plus recommandé d'utiliser la classe java.util.Calendar pour le traitement de l'heure et de la date. Nous ne présenterons pas ici les opérations de la classe Date. Passons directement au sujet, comment utiliser la classe Calendar pour obtenir la date et l'heure actuelles.

La méthode constructeur de Calendar étant protégée, nous allons créer un objet Calendar via la méthode getInstance fournie dans l'API.

//有多个重载方法创建 Calendar 对象
Calendar now = Calendar.getInstance(); //默认
//指定时区和地区,也可以只输入其中一个参数
Calendar now = Calendar.getInstance(timeZone, locale);
Copier après la connexion

Ensuite, nous pouvons obtenir les différents paramètres temporels actuels grâce à cet objet.

int year = now.get(Calendar.YEAR); //,当前年份
int month = now.get(Calendar.MONTH) + ; //,当前月,注意加
int day = now.get(Calendar.DATE); //,当前日Date date = now.getTime(); //直接取得一个 Date 类型的日期
Copier après la connexion

Pour obtenir d'autres types de données temporelles, il vous suffit de modifier les paramètres dans now.get(). En plus des trois paramètres ci-dessus, d'autres paramètres couramment utilisés sont. comme suit :

•Calendar.DAY_OF_MONTH : Date, identique à Calendar.DATE
•Calendar.HOUR : Heures au format 12 heures
•Calendar.HOUR_OF_DAY : Heures au format 24 heures
•Calendar.MINUTE : Minutes
•Calendar.SECOND : Secondes
•Calendar.DAY_OF_WEEK : Jour de la semaine

En plus d'obtenir des données temporelles, nous pouvons également définir divers paramètres de temps via l'objet Calendrier.

//只设定某个字段的值
 // public final void set(int field, int value)
 now.set(Calendar.YEAR, );
 //设定年月日或者年月日时分或年月日时分秒
 // public final void set(int year, int month, int date[, int hourOfDay, int minute, int second])
 now.set(, , [, , , ]);
 //直接传入一个 Date 类型的日期
 // public final void setTime(Date date)
 now.set(date);
Copier après la connexion

Remarque :

•Lorsque le paramètre d'heure est défini, d'autres valeurs associées seront recalculées. Par exemple, lorsque vous définissez la date. au 11, le jour de la semaine changera en conséquence.
•Ajoutez 1 au mois obtenu pour obtenir le mois réel.
•Dans la classe Calendrier, dimanche vaut 1, lundi vaut 2, et ainsi de suite.

2. Conversion de date

Après avoir parlé de la valeur de date, parlons de la conversion de date. La conversion est généralement l'interaction entre la date de type Date et la chaîne de type String For. conversion, j'utilise principalement java.text.SimpleDateFormat pour les opérations de conversion.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 try {
   //日期转字符串
   Calendar calendar = Calendar.getInstance();
   Date date = calendar.getTime();
   String dateStringParse = sdf.format(date);
   //字符串转日期
   String dateString = "-- ::";
   Date dateParse = sdf.parse(dateString);
 } catch (ParseException e) {
   e.printStackTrace();  
 }
Copier après la connexion

Remarque :

•Le format de conversion doit être spécifié lors de la création d'un objet SimpleDateFormat.

•Le format de conversion est sensible à la casse, aaaa représente l'année, MM représente le mois, dd représente la date, HH représente l'heure en 24 hexadécimal, hh représente l'heure en hexadécimal, mm représente la minute, ss représente la Seconde.

3. Addition et soustraction de dates

De manière générale, nous effectuerons deux types d'opérations d'addition et de soustraction sur les dates :

• Avec une certaine date, une date est utilisée comme base pour calculer les jours avant/après, les années avant/après ou les dates avant et après d'autres unités de temps

//根据现在时间计算
Calendar now = Calendar.getInstance();
now.add(Calendar.YEAR, ); //现在时间的年后
now.add(Calendar.YEAR, -); //现在时间的年前
//根据某个特定的时间 date (Date 型) 计算
Calendar specialDate = Calendar.getInstance();
specialDate.setTime(date); //注意在此处将 specialDate 的值改为特定日期
specialDate.add(Calendar.YEAR, ); //特定时间的年后
specialDate.add(Calendar.YEAR, -); //特定时间的年前
Copier après la connexion

Notez que le La méthode add de l'objet Calendrier est utilisée, Calendar.YEAR peut être modifié en n'importe quel champ d'unité de temps pour effectuer les calculs de date sous différentes unités de temps.

• Calculez l'intervalle entre deux heures, par exemple, calculez combien de jours y a-t-il entre le 1er janvier 2016 et maintenant.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString = "-- ::";
Calendar calendar = Calendar.getInstance();
long nowDate = calendar.getTime().getTime(); //Date.getTime() 获得毫秒型日期
try {
    long specialDate = sdf.parse(dateString).getTime();
    long betweenDate = (specialDate - nowDate) / ( * * * ); //计算间隔多少天,则除以毫秒到天的转换公式
    System.out.print(betweenDate);
} catch (ParseException e) {
    e.printStackTrace();
}
Copier après la connexion

 

4. Comparaison de dates

En parcourant mon code précédent, j'ai découvert qu'à chaque fois que je jouais comparaison de date Pendant l'opération, la date sera toujours convertie en chaîne au format "aaaaMMjj", puis la chaîne sera convertie en valeur numérique, puis les valeurs numériques seront comparées. Haha, une simple opération de comparaison nécessite d'écrire plus de dix lignes de code, ce qui est un peu écrasant. Parlons maintenant de la bonne façon de comparer les dates.

Il existe généralement deux méthodes de comparaison de dates, communes à java.util.Date ou java.util.Calendar. L’une consiste à comparer via les méthodes after() et before(), et l’autre consiste à comparer via la méthode compareTo().

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String dateString_01 = "2016-01-01 11:11:11";
String dateString_02 = "2016-01-02 11:11:11";
try {
    Date date_01 = sdf.parse(dateString_01);
    Date date_02 = sdf.parse(dateString_02);
    System.out.println(date_01.before(date_02)); //true,当 date_01 小于 date_02 时,为 true,否则为 false
    System.out.println(date_02.after(date_01)); //true,当 date_02 大于 date_01 时,为 true,否则为 false
    System.out.println(date_01.compareTo(date_02)); //-1,当 date_01 小于 date_02 时,为 -1
    System.out.println(date_02.compareTo(date_01)); //1,当 date_02 大于 date_01 时,为 1
    System.out.println(date_02.compareTo(date_02)); //0,当两个日期相等时,为 0
} catch (ParseException e) {
    e.printStackTrace();
}
Copier après la connexion

Ce qui précède est la description complète des opérations de date courantes (acquisition de valeur, conversion, addition, soustraction, comparaison) en Java présentées dans cet article.

Pour plus d'articles liés aux opérations de date courantes en Java (acquisition de valeur, conversion, addition, soustraction, comparaison), veuillez faire attention au site Web PHP chinois !

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal