java.time.ZonedDateTime
En Calendar
est terrible, tout comme sa classe concrète habituelle, GregorianCalendar
. Ces classes héritées du passé ont été supplantées il y a plusieurs années par les classes modernes. java.time les classes, en particulier ZonedDateTime
.
En cas de rencontre avec un Calendar
pour voir s'il s'agit bien d'un objet GregorianCalendar
objet. Si c'est le cas, la conversion se fait à l'aide du nouveau to…
/ from…
ajoutées aux anciennes classes.
if( myCal instanceof GregorianCalendar ) {
GregorianCalendar gc = ( GregorianCalendar ) myCal ; // Cast to the concrete type.
ZonedDateTime zdt = gc.toZonedDateTime() ; // Convert from legacy class to modern class.
}
Objets immuables
En java.time les classes utilisent à bon escient les objets immuables Les produits de l'industrie de l'automobile sont des produits de qualité, avec des motifs appropriés à leur objectif.
Vous ne pouvez donc pas manipuler les champs individuels d'un membre dans un objet existant. Au lieu de cela, vous transmettez une nouvelle valeur de champ pour produire un nouvel objet basé sur la combinaison des valeurs d'origine et de votre valeur spécifique différente. Voir l'article with
des méthodes.
Ajouter/soustraire une période de temps
Dans votre cas, il semble que vous souhaitiez effectuer une addition ou une soustraction pour arriver à un nouveau moment.
Spécifiez un intervalle de temps à l'aide de la touche :
Duration
pour une échelle heures-minutes-secondes
Period
pour une échelle d'années-mois-jours.
Exemple : Ajouter quelques jours pour obtenir un moment plus tard.
Period p = Period.ofDays( 3 ) ;
ZonedDateTime threeDaysLater = zdt.plus( p ) ;
Pour effectuer ce type de travail, vous pouvez utiliser les outils suivants Interval
y LocalDateRange
les cours proposés par le ThreeTen-Extra dont le lien figure ci-dessous.
A propos de java.time
En java.time est intégré à Java 8 et aux versions ultérieures. Ces classes remplacent les anciennes classes héritage les classes de date et d'heure telles que java.util.Date
, Calendar
, & SimpleDateFormat
.
Pour en savoir plus, consultez le site Tutoriel Oracle . Vous trouverez de nombreux exemples et explications sur Stack Overflow. La spécification est JSR 310 .
En Joda-Time Le projet, en cours d'élaboration, est en cours de réalisation. mode de maintenance conseille de migrer vers l java.time classes.
Vous pouvez échanger java.time directement avec votre base de données. L'utilisation d'un Pilote JDBC conforme à JDBC 4.2 ou plus tard. Pas besoin de ficelles, pas besoin de java.sql.*
classes.
Où obtenir les classes java.time ?
![enter image description here]()
En ThreeTen-Extra étend java.time avec des classes supplémentaires. Ce projet est un terrain d'essai pour d'éventuels ajouts futurs à java.time. Vous pouvez y trouver des classes utiles telles que Interval
, YearWeek
, YearQuarter
et plus .