Comment incrémenter une date d'un jour de Java?
Je travaille avec une date dans ce format: yyyy-mm-dd
.
Comment puis-je ajouter un à cette date d'un jour?
- Si vous utilisez Java 8 ou plus récent, vous pouvez utiliser la nouvelle date/heure api. Voir cette réponse: stackoverflow.com/a/23910924/1115554
- new DateTime().plusDays(1).toDate() ???
Vous devez vous connecter pour publier un commentaire.
Quelque chose comme cela devrait faire l'affaire:
Date
méthodes sont obsolètes, etCalendar
devrait être utilisée au lieu deDate
de toute façon."yyyy-MM-dd"
Observer mois doit être en majuscules."mm"
donnerait minutes :).add()
roulera la date. Voir sur ideone.LocalDate.parse( "2017-01-23" ).plusDays( 1 ).toString()
java.util.Date
,java.util.Calendar
, etjava.text.SimpleDateFormat
sont maintenant héritage, supplantée par la java.temps les classes intégré dans Java 8 et les versions ultérieures. Voir Tutoriel par Oracle.Java ne semble pas être bien derrière la de huit balle par rapport à C#. Cette méthode utilitaire indique le moyen de le faire en Java SE 6 à l'aide de la Calendrier.ajouter une méthode (probablement le moyen le plus facile).
Pour ajouter un jour, par la question posée, appelez ça comme suit:
java.util.Date
,java.util.Calendar
, etjava.text.SimpleDateFormat
sont maintenant héritage, supplantée par la java.temps les classes intégré dans Java 8 et les versions ultérieures. Voir Tutoriel par Oracle.java.temps
Sur Java 8 et plus tard, le java.en temps c'est assez bien automatique. (Tutoriel)
En supposant
String
d'entrée et de sortie:ZonedDateDateTime
etOffsetDateTime
ont égalementplusDays
etminusDays
ainsi que les méthodes d'LocalDate
LocalDate
.Je préfère utiliser DateUtils de Apache. Cochez cette http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/time/DateUtils.html. Il est très pratique surtout quand vous avez à l'utiliser à plusieurs endroits dans votre projet et ne veux pas écrire votre un liner méthode pour cela.
L'API dit:
Noter qu'il renvoie un nouvel objet Date et ne pas apporter des modifications à la précédente elle-même.
Construire un Calendrier de l'objet et d'utiliser la méthode add(Calendar.DATE, 1);
Prendre un coup d'oeil à Joda-Time (https://www.joda.org/joda-time/).
Veuillez noter que cette ligne ajoute 24 heures:
mais cette ligne ajoute un jour
Jours avec une heure d'été changement (25 ou 23 heures), vous obtiendrez des résultats différents!
Java 8 ajout d'une nouvelle API pour travailler avec des dates et des heures.
Avec Java 8, vous pouvez utiliser les lignes de code suivantes:
januaryFirst.plusDays(1)
pasdate.plusDays(1)
.vous pouvez utiliser java Simple.util lib
java.util.Date
,java.util.Calendar
, etjava.text.SimpleDateFormat
sont maintenant héritage, supplantée par la java.temps les classes intégré dans Java 8 et les versions ultérieures. Voir Tutoriel par Oracle.Cela donnera à la date du lendemain.
c.add(...)
paramètres peuvent être modifiés à partir de 1 vers un autre numéro pour incrémenter.Date
ouCalendar
de nouveau.Si vous utilisez Java 8, puis de faire comme ceci.
Si vous souhaitez utiliser SimpleDateFormat, puis de faire comme ceci.
LocalDate
classe pasLocalDateTime
.Cela prend le nombre de millisecondes écoulées depuis l'époque de oldDate et ajoute 1 jour valeur en millisecondes, puis utilise la Date() constructeur public pour créer une date à l'aide de la nouvelle valeur. Cette méthode permet d'ajouter 1 jour, ou n'importe quel nombre d'heures/minutes, pas seulement des jours entiers.
Depuis Java 1.5 TimeUnit.JOURS.toMillis(1) l'air plus propre pour moi.
LocalDate
de classe en java.les classes de temps pour Java 8 et les versions ultérieures, et l'arrière-port de Java 6 & Java 7 dans la ThreeTen-Backport projet.Dans java 8, vous pouvez utiliser
java.time.LocalDate
Vous pouvez convertir en en
java.util.Date
objet comme suit.Vous pouvez formiate
LocalDate
dans une Chaîne de caractères comme suit.C'est très simple, en essayant d'expliquer en un mot simple.
obtenir la date du jour comme ci-dessous
Maintenant définir un jour à l'avance à cette date par le calendrier.ajouter une méthode qui prend (constant, valeur). Ici constante pourrait être la DATE, des heures, min, sec etc. de la valeur et de la valeur de la constante. Comme pour un jour, devant constante est le Calendrier.DATE et sa valeur est 1 parce que nous voulons un jour à l'avance de la valeur.
System.out.println(calendar.getTime());//print modified date which is
la date du lendemainGrâce
Dans Java 8 moyen simple de le faire est:
Instant.now().plus( 1 , ChronoUnit.DAYS )
?Apache Commons a déjà cette DateUtils.addDays(Date à date, int montant) http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/time/DateUtils.html#addDays%28java.util.Date,%20int%29 laquelle vous utilisez ou vous pourriez aller avec le JodaTime pour le rendre plus propre.
Juste passer la date en Chaîne de caractères et le nombre de jours prochains
Si vous souhaitez ajouter une seule unité de temps et vous vous attendez à ce que les autres champs pour être incrémenté ainsi, vous pouvez utiliser la méthode add. Voir l'exemple ci-dessous:
Sera D'Impression:
Utiliser le
DateFormat
API pour convertir la Chaîne de caractères dans un objet Date, puis utilisez leAgenda
API pour ajouter un jour. Laissez-moi savoir si vous voulez spécifiques des exemples de code, et je peux mettre à jour ma réponse.Si vous êtes à l'aide de Java 8,
java.time.LocalDate
etjava.time.format.DateTimeFormatter
pouvez faire ce travail tout à fait simple.toString()
pour produire la chaîne de je aaaa-MM-jj (et si vous insistez, n'oubliez pas quemm
est à quelques minutes alors queMM
est le mois).Vous pouvez utiliser ce package de "org.apache.commons.lang3.temps":
Date
classe en 2018 est de mauvais conseils. Le gênants vieille date-heure classes telles quejava.util.Date
,java.util.Calendar
, etjava.text.SimpleDateFormat
sont maintenant héritage, supplantée par la java.de temps les classes intégré dans Java 8 & Java 9. Voir Tutoriel par Oracle. Voir d'autres Réponses à l'aide deLocalDate
classe.SimpleDateFormat
classe malheureusement injecte un fuseau horaire, implicitement l'application de la JVM par défaut actuel de la zone. De sorte que les résultats de ce code varie par ce que le courant de défaut est — et que par défaut peut changer à tout moment pendant de l'exécution.Clarifions les cas d'utilisation: Vous voulez faire du calendrier de l'arithmétique et de début/fin avec un java.util.Date.
Certaines approches:
Envisager d'utiliser java.temps.Instant:
Date
avec le moderne java.temps classes telles queInstant
. Le java.temps classes entièrement supplanter les classes héritées. Plus précisément,Instant
remplacejava.util.Date
.Calendar
classe en 2019.Si vous utilisez Java SE 8 ou supérieur, vous devez utiliser la nouvelle Date/Heure API
Si vous devez faire une conversion à partir de java.util.Date de java.temps.LocalDate, vous pouvez utiliser cette méthode.
Si vous utilisez une version antérieure à la version Java SE 8 je vous conseille d'utiliser Joda-Time
C'est simple en fait.
Un jour contient 86400000 millisecondes.
Alors d'abord vous obtenez l'heure actuelle dans millis par Le Système à l'aide de
System.currentTimeMillis()
alorsajouter le 84000000 millisecondes et l'utilisation de la
Date
Classe pour générer Un format de date pour les millisecondes.Exemple
String Today = new Date(System.currentTimeMillis()).toString();
Chaîne d'aujourd'Hui sera 2019-05-9
String Tommorow = new Date(System.currentTimeMillis() + 86400000).toString();
Chaîne Tommorow sera 2019-05-10
String DayAfterTommorow = new Date(System.currentTimeMillis() + (2 * 86400000)).toString();
Chaîne DayAfterTommorow sera 2019-05-11
Date
classe qui a été supplanté ans par le moderne java.temps classes. Donc, beaucoup plus simple à utiliser:LocalDate.parse( "2019-01-23" ).plusDays( 1 )
Sun Apr 30 16:25:33 CEST 2017
vientMon May 01 16:25:33 CEST 2017
. C'est toujours un découragés solution si. Non seulement est la méthode déconseillée pour une bonne raison, également, en 2017, nous avons de très bonnes alternatives pour lesDate
classe.