Maison >Java >javaDidacticiel >Heure Java ---- introduction détaillée à 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.
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);
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();
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);
Ces valeurssont 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);
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));
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());
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
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()); //输出的日期是当前日期的前一天,其他所有的都不变
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对象
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
clear() peut également être attaché avec le paramètre int field, ce qui signifie effacer cette valeur uniquement :Jeudi 01 janvier 00:00:00 GMT 08 :00 1970<.>
calendar.clear(Calendar.YEAR);System.out.println(calendar.getTime());
上述代码最后显示的年份是1970年(不可能清除成0000年…),其他的也可以以此类推。
isSet()方法确定日历字段是否已经设置了一个值,有些值会因为get方法触发计算而被设置,很多的时候,只要进行了初始化,很多值已经被设置了,但是作为一个boolean返回值的函数,检测的时候我们相信还是会起到作用的。
if(calendar.isSet(Calendar.DATE))
Calendar类正如其名,可以实现一个日历,对其进行操作且功能较为完整。如果你只是需要一个时间,这个类并不一定比new Date()能快多少,但是对于一些细节的操作,还是有很多值得我们学习的地方。
以上就是java时间----java.util.Calendar的详细介绍的内容,更多相关内容请关注PHP中文网(www.php.cn)!