Je veux réduire un jour pendant une date donnée. Mais cela réduit pendant 1 mois.
4 Réponses :
//variable to store date in string format String yesterdayDate=null; //to get calendar instance Calendar cal = Calendar.getInstance(); //subtract 1 from calendar current date cal.add(Calendar.DATE, -1); //format date DateFormat dateFormat = new SimpleDateFormat("EEEE, dd MM YYYY"); //get formatted date yesterdayDate=dateFormat.format(cal.getTime()); System.out.println("Yesterday's date = "+ yesterdayDate);
java.time.localdate code> Vous pouvez utiliser localDate code>
comme ci-dessous, p> xxx pré> meilleur à éviter date code> classe. Mais si vous le devez, vous pouvez convertir. P> System.out.println(oneDayBefore);
String dateTextOneDayBefore = formatter.format(localDate);//Format to similar to input 'dateText'
System.out.println(dateTextOneDayBefore);
Votre utilisation de localdate code> est géniale. Je ne sais pas pourquoi vous revenez à
date code> pour imprimer, cependant. Vous pouvez utiliser
format.format (localDate) code> à la place. De plus, je vous recommande de définir
locale.français code> dans le
DateTimeformatter code>, puisque vous analysez le texte anglais.
Merci @ tiij7. Locale édité et ajouté.Anglais. Je n'aurais pas converti à Java.Util.Date. S'ils veulent Java.Util.Date pour la logique après.
Pour que les commentaires, j'ai édité votre réponse pour ajouter une note sur ne pas recommander la date code> code>, pourtant comment convertir s'ils le doivent.
Si vous insistez sur l'utilisation du calendrier, essayez ce qui suit:
DateTimeFormat format = DateTimeFormat.forPattern("yyyy-MM-dd 00:00:00.000000000"); DateTime now = new DateTime(); System.out.println("Previous :" + format.print(now); DateTime oneDayAgo = now.minusDays(1); System.out.println("Updated :" + format.print(oneDayAgo);
JODA-TIME est un grand bond en avant par rapport au calendrier code> de code>. Toujours mieux est Java.time, l'API et l'heure de Java modernes et le successeur de Joda-Time.
vous avez raison. Ma réponse suppose qu'il existe une raison pour que l'utilisateur n'utilise pas de nouvelle API de date de date Java, comme travailler sur Java de plus de 8 ans.
remplacer p>
avec p>
Regardez sur ce http://tatudials.jenkov.com/java-inténationnation/ SimpleDateFormat.html P> df = nouveau SimpleDateFormat ("Eeee, jj mmmm aaaa aaaa"); code> p>
df = nouveau SimpleDateFormat ("Eeee, jj mmmm aaaa aaaa"); code> p>
FYI, les classes de date terriblement défectueuses telles que java.util.date code>
, java.util.calendar code>
et java.text.simpledeformat code> sont maintenant Legacy , supplanté par le Java.time I> cours intégré à Java 8 et plus tard. Suggérer que leur utilisation en 2020 est de mauvais avis.
Il y a un problème avec votre format de date, il devrait être "jj mm yyyy"
Il suffit de changer aaaa b> à aaayyy b> au format de date, le repos est ok. En savoir plus ici; docs.oracle.com/javase/7/ Docs / API / Java / Texte / ...
Je vous recommande d'utiliser
SimpleDateformat code> et
date code>. Ces classes sont mal conçues et longtemps obsolètes, le premier en particulier notoirement gênant. Utilisez plutôt
localDate code> et
DateTimeformatter code>, à partir de Java.time, l'API et l'heure de l'heure de Java modernes .