Maison > Java > javaDidacticiel > Heure Java ---- introduction détaillée à java.util.Calendar

Heure Java ---- introduction détaillée à java.util.Calendar

黄舟
Libérer: 2017-03-01 13:22:32
original
1675 Les gens l'ont consulté

java.util.Calendar

Il existe plusieurs classes de temps en Java, mais à mesure que la date est progressivement désactivée, les méthodes sont ajoutées lentement après avoir supprimé la croix , les fonctions utilisables restantes ont été implémentées dans Calendar, et la sous-classe GregorianCalendar de Calendar est trop approfondie dans la recherche de calendriers spéciaux. Nous n'utilisons généralement pas cette sous-classe. Nous pouvons croire que la classe Calendar sera la classe temporelle principale à l'avenir. Jetons un coup d'œil aux détails de la classe Calendar. S'il y a des erreurs, veuillez nous corriger.

(1) Instanciation

La classe Calendar est une classe abstraite et ne peut pas être instanciée. Il existe deux manières pour cette classe d'obtenir une instance de calendrier :

  Calendar calendar = Calendar.getInstance(TimeZone zone , Locale locale);
Copier après la connexion

En appelant la méthode getInstance, sélectionnez les attributs Timezone et Locale par défaut pour renvoyer un calendrier. Vous pouvez également ajouter le paramètre Timezone ou Locale pour sélectionner l'emplacement géographique, veuillez consulter java.util.Timezone, java. packages util.Locale, l’heure générale par défaut est l’heure commune et nous n’avons pas réellement besoin de la modifier.

De plus, il existe une méthode qui peut être instanciée. Rien d'étonnant, l'ancienne routine Java consiste à utiliser des sous-classes pour l'instanciation. Il n'existe qu'une seule sous-classe de Calendar - GregorianCalendar, qui se traduit par le calendrier grégorien. Nous parlerons de ce GregorianCalendar séparément à l'avenir. La deuxième façon d'instanciation est la suivante :

Calendar calendar = new GregorianCalendar();
Copier après la connexion


(2) Variables de classe

Variables dans le calendrier Fondamentalement, elles sont définies par final. Ces variables incluent tous les contenus temporels tels que l'année, le mois, l'heure, le matin et l'après-midi, etc. J'en ai trouvé beaucoup sur Baidu. Lorsque vous souhaitez utiliser cela, il est préférable de regarder l'API. Je vais brièvement en coller une copie ici :

calendar.get(Calendar.YEAR);  
calendar.get(Calendar.MONTH); 
// 月份从0开始 calendar.get(Calendar.DAY_OF_MONTH);   
calendar.get(Calendar.DAY_OF_WEEK);  
calendar.get(Calendar.WEEK_OF_YEAR);  
calendar.get(Calendar.WEEK_OF_MONTH);  
calendar.get(Calendar.HOUR);        
// 12小时calendar.get(Calendar.HOUR_OF_DAY); 
// 24小时 calendar.get(Calendar.MINUTE);  
calendar.get(Calendar.SECOND);  
calendar.get(Calendar.MILLISECOND);
Copier après la connexion

Ces valeurs​​sont toutes. variables finales dans le code source de jdk Puisqu'il s'agit d'une modification finale statique int, cela signifie que ces variables ont des valeurs initiales de type int. En effet, ces variables sont numérotées séquentiellement dans la classe Calendar en guise de jugement de plage lorsque certaines fonctions passent en paramètres. Ensuite, cette situation peut se produire accidentellement, comme le code suivant :

System.out.println(Calendar.DAY_OF_MOUTH);
Copier après la connexion

La sortie est 5, bien qu'aujourd'hui ne soit pas le 5 de ce mois. C'est en fait une erreur. En fait, ce que vous affichez est la valeur initiale 5 de DAY_OF_MOUTH dans cette classe. Si vous souhaitez représenter la date du mois en cours, vous devez exporter l'instance de classe vers l'objet, mais dans une classe où. les variables de la classe peuvent être directement cliquées, cette erreur est très courante. La méthode correcte doit être obtenue en utilisant la méthode get() (le calendrier est l'objet de notre instance) :

System.out.println(calendar.get(Calendar.DAY_OF_MOUTH));
Copier après la connexion

(3) fonction compareTo() after() before()

compareTo( Calendar othercalendar), renvoie une valeur int Si l'heure de l'objet est postérieure au paramètre time, il renvoie un nombre supérieur à 0, sinon il renvoie un nombre inférieur à 0. En particulier, si l'heure est la même, il renvoie 0. Je pense que l'implémentation de cette méthode peut directement renvoyer Faites une différence avec le nombre de millisecondes (je pense que ma supposition est logique...) et utilisez la différence en millisecondes comme valeur de retour.
Après (Calendar othercalendar), before (Calendar othercalendar), ces deux fonctions sont également faciles à deviner. Elles renvoient une valeur booléenne. La fonction after() renvoie une valeur positive si l'heure est après le paramètre, et la fonction before. () renvoie une valeur positive si l'heure est postérieure au paramètre précédemment renvoyé une valeur positive.

Calendar calendar = Calendar.getInstance();
Calendar calendarother = Calendar.getInstance();
calendarother.add(Calendar.DATE, -20);
if(calendar.after(calendarother))
    System.out.println("after");calendarother.add(Calendar.DATE, 100);if(calendar.before(calendarother))
    System.out.println("before");if(calendar.compareTo(calendarother)>0)
        System.out.println(calendar.getTime()+">"+calendarother.getTime());
Copier après la connexion

Le résultat de sortie est :

after 

  before 

  Sun Jan 11 21:19:49 GMT+08:00 1970>Thu Jan 01 00:00:00 GMT+08:00 1970
Copier après la connexion


(4) get() add() set() Fonction setTime()

Dans l'exemple ci-dessus, la fonction add(int field, int montant) apparaît. Cette fonction est relativement puissante et peut ajouter ou soustraire la valeur du premier paramètre pour modifier le calendrier. valeur de l'élément correspondant dans l'entité.

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.DATE, -1);
System.out.println(calendar.getTime());
//输出的日期是当前日期的前一天,其他所有的都不变
Copier après la connexion

Il n'y a rien à dire sur get(int field). Mettez la valeur à obtenir et affichez-la. Au fait, getTimeInMillis() renvoie le nombre de millisecondes dans les applications réelles. , ce nombre de millisecondes Il est encore un peu utilisé.
La méthode set() propose de nombreuses façons de saisir des paramètres, qui peuvent être comprises par écrit. La fonction setTime() y place un objet Date et renvoie un calendrier défini en fonction de la Date. Une autre chose particulière à noter est que le mois commence à 0. Mettre le mois à 0 signifie en fait janvier, le mettre à 1 signifie en fait février. Le premier jour de la semaine est le dimanche et le 7ème jour est le samedi.

calendar.get(Calendar.DATE);
calendar.getTimeInMillis();

calendar.set(field, value);
calendar.set(year, month, date);
//月份是从0开始,下同
calendar.set(year, month, date, hourOfDay, minute);
calendar.set(year, month, date, hourOfDay, minute, second);
calendar.setTime(Date date);
//Date对象
Copier après la connexion

(5) la fonction getTime() clear() isSet()

la fonction getTime() renvoie une heure, probablement dans ce format

Sun 11 janvier 21:19:49 GMT 08:00 1970

Vous pouvez utiliser le formatage de l'heure pour la modifier comme vous le souhaitez. Voir mon autre blog pour plus de détails. Cette fonction n'existe pas. . La fonction clear() efface toutes les variables de l'objet sans paramètres. Le temps après l'effacement reprend directement sa forme d'origine et devient

Jeudi 01 janvier 00:00:00 GMT 08 :00 1970<. 🎜>

clear() peut également être attaché avec le paramètre int field, ce qui signifie effacer cette valeur uniquement :

calendar.clear(Calendar.YEAR);System.out.println(calendar.getTime());
Copier après la connexion

上述代码最后显示的年份是1970年(不可能清除成0000年…),其他的也可以以此类推。
isSet()方法确定日历字段是否已经设置了一个值,有些值会因为get方法触发计算而被设置,很多的时候,只要进行了初始化,很多值已经被设置了,但是作为一个boolean返回值的函数,检测的时候我们相信还是会起到作用的。

if(calendar.isSet(Calendar.DATE))
Copier après la connexion

(六) 总结

Calendar类正如其名,可以实现一个日历,对其进行操作且功能较为完整。如果你只是需要一个时间,这个类并不一定比new Date()能快多少,但是对于一些细节的操作,还是有很多值得我们学习的地方。

 以上就是java时间----java.util.Calendar的详细介绍的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!


É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