Objet Date du Calendrier [Java]
J'ai une classe de Cinéma
en ça, j'ai une Date de début, une durée et une Date d'arrêt.
Démarrer et arrêter la Date de la Date d'Objets (privée Date de date de début ...)
(C'est une mission donc je ne peux pas changer ça)
maintenant, je veux calculer automatiquement le stopDate par l'ajout de la durée (en min) à la date de début.
Par mon travail sur les connaissances à la fois des fonctions de manipulation de Date est obsolète, d'où une mauvaise pratique, mais d'un autre côté, je ne vois aucune façon de convertir la Date objet d'un calendrier de l'objet dans le but de manipuler le temps et de le reconvertir à un objet Date.
Est-il possible? Et si, il est ce qui serait le mieux la pratique
- Si vous travaillez avec des dates beaucoup, je trouve Joda Temps à être beaucoup mieux que Java est à Jour et le Calendrier des classes: joda-time.sourceforge.net
- Les gens de la remise des missions couvrant Date et le Calendrier doivent être punis. 🙂 Si j'étais dans votre position, je voudrais utiliser le sane API ajoutée dans JAVA 7.
- Question similaire: la Conversion d'un objet Date, un calendrier de l'objet
Vous devez vous connecter pour publier un commentaire.
Ce que vous pourriez faire est de créer une instance d'une
GregorianCalendar
et puis définissez laDate
comme une heure de début:Cependant, une autre approche est de ne pas utiliser
Date
à tous. Vous pouvez utiliser une approche comme ceci:De cette façon, vous pouvez accéder à la fois l'heure de début et obtenir la durée du début à la fin. La précision est à vous de cours.
date est un java.util.L'objet Date. Vous pouvez utiliser le Calendrier.getInstance() afin d'obtenir le Calendrier de l'instance(beaucoup plus efficace).
Calendar.getInstance()
renvoie un locale-specificCalendar
mise en œuvre, il est donc généralement préférable.Calendrier.setTime()
Il est souvent utile de se pencher sur la signature et la description des méthodes de l'API, et pas seulement leur nom 🙂 - Même dans la norme Java API, les noms peuvent parfois être trompeuses.
Vous n'avez pas besoin de les convertir à
Calendar
pour cela, vous pouvez simplement utilisergetTime()
/setTime()
à la place.Il y a 1000 millisecondes dans une seconde, et 60 secondes dans une minute. Juste de faire le calcul.
La
L
le suffixe1000
signifie que c'est unlong
littérale; ces calculs généralement des débordementsint
facilement.tl;dr
java.temps
D'autres Réponses sont correctes, surtout la Réponse par Borgwardt. Mais les Réponses que l'utilisation galvaudée classes héritées.
L'original date-heure classes livré avec Java ont été supplantés par java.les classes de temps. Effectuer une logique d'entreprise en java.les types d'heures. Afin de le convertir en formes qu'en cas de nécessité de travailler avec l'ancien code pas encore mis à jour pour gérer java.les types d'heures.
Si votre
Agenda
est en fait unGregorianCalendar
vous pouvez convertir en unZonedDateTime
. Trouver de nouvelles méthodes ajoutées aux anciennes classes pour faciliter la conversion vers/à partir de java.les types d'heures.Si votre
Calendar
n'est pas unGregorian
, appeltoInstant
pour obtenir unInstant
objet. LeInstantané
classe représente un moment dans le scénario de UTC avec une résolution de nanosecondes.De même, si vous commencez avec un
java.util.Date
de l'objet, de le convertir à uneInstant
. LeInstantané
classe représente un moment dans le scénario de UTC avec une résolution de nanosecondes (jusqu'à neuf (9) chiffres d'une fraction décimale).Appliquer une zone de temps pour obtenir un
ZonedDateTime
.Pour obtenir un
java.util.Date
objet, allez par le biais de laInstant
.Pour plus de discussion de conversion entre l'héritage de la date-heure de types et de java.temps, et une chouette diagramme, voir ma Réponse à une autre Question.
Duration
Représentent l'intervalle de temps comme un
Durée
objet. Votre entrée pour la durée d'un certain nombre de minutes, comme mentionné dans la Question.Vous pouvez l'ajouter au début pour déterminer l'arrêter.
Sur java.temps
La java.le temps cadre est intégré dans Java 8 et les versions ultérieures. Ces classes permettent d'éviter la pénible vieux héritage date du temps des classes comme
java.util.Date
,Agenda
, &SimpleDateFormat
.La Joda-Time projet, maintenant dans le mode de maintenance, conseille la migration vers java.temps.
Pour en savoir plus, consultez les Oracle Tutoriel. Et de recherche de Débordement de Pile pour de nombreux exemples et des explications. La spécification est JSR 310.
Où obtenir le java.les classes de temps?
La ThreeTen-Extra projet s'étend java.temps avec d'autres classes. Ce projet est un terrain d'essai pour de possibles futurs ajouts à java.temps. Vous pouvez trouver quelques classes utiles ici comme
Intervalle
,YearWeek
,YearQuarter
, et plus.quelque chose comme
Voici un exemple complet sur la façon de transformer votre date de différents types:
Date
,Calendar
) sont maintenant héritage, a supplanté ans par le moderne java.temps classes.