J'ai un java.util.Date
dans le format yyyy-mm-dd
. Je veux que ce soit au formatmm-dd-yyyy
Voici l'exemple d'utilitaire que j'ai essayé pour cette conversion:
// Setting the pattern
SimpleDateFormat sm = new SimpleDateFormat("mm-dd-yyyy");
// myDate is the java.util.Date in yyyy-mm-dd format
// Converting it into String using formatter
String strDate = sm.format(myDate);
//Converting the String back to java.util.Date
Date dt = sm.parse(strDate);
La sortie que j'obtiens n'est toujours pas au format mm-dd-yyyy
.
Veuillez me faire savoir comment formater un java.util.Date
de yyyy-mm-dd
àmm-dd-yyyy
java
date
date-format
user182944
la source
la source
yyyy-mm-dd
.Réponses:
Date
est un conteneur pour le nombre de millisecondes depuis l'époque Unix (00:00:00 UTC le 1er janvier 1970).Il n'a aucune notion de format.
Java 8+
LocalDateTime ldt = LocalDateTime.now(); System.out.println(DateTimeFormatter.ofPattern("MM-dd-yyyy", Locale.ENGLISH).format(ldt)); System.out.println(DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.ENGLISH).format(ldt)); System.out.println(ldt);
Les sorties...
05-11-2018 2018-05-11 2018-05-11T17:24:42.980
Java 7-
Vous devriez utiliser le Backport ThreeTen
Réponse originale
Par exemple...
Date myDate = new Date(); System.out.println(myDate); System.out.println(new SimpleDateFormat("MM-dd-yyyy").format(myDate)); System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(myDate)); System.out.println(myDate);
Les sorties...
Wed Aug 28 16:20:39 EST 2013 08-28-2013 2013-08-28 Wed Aug 28 16:20:39 EST 2013
Aucune des mises en forme n'a modifié la
Date
valeur sous-jacente . Tel est le but de laDateFormatter
sMis à jour avec un exemple supplémentaire
Juste au cas où le premier exemple n'aurait pas de sens ...
Cet exemple utilise deux formateurs pour mettre en forme la même date. J'utilise ensuite ces mêmes formateurs pour analyser les
String
valeurs enDate
s. L'analyse qui en résulte ne modifie pas la façon dontDate
elle rapporte sa valeur.Date#toString
est juste une décharge de son contenu. Vous ne pouvez pas changer cela, mais vous pouvez formater l'Date
objet comme vous le souhaiteztry { Date myDate = new Date(); System.out.println(myDate); SimpleDateFormat mdyFormat = new SimpleDateFormat("MM-dd-yyyy"); SimpleDateFormat dmyFormat = new SimpleDateFormat("yyyy-MM-dd"); // Format the date to Strings String mdy = mdyFormat.format(myDate); String dmy = dmyFormat.format(myDate); // Results... System.out.println(mdy); System.out.println(dmy); // Parse the Strings back to dates // Note, the formats don't "stick" with the Date value System.out.println(mdyFormat.parse(mdy)); System.out.println(dmyFormat.parse(dmy)); } catch (ParseException exp) { exp.printStackTrace(); }
Quelles sorties ...
Wed Aug 28 16:24:54 EST 2013 08-28-2013 2013-08-28 Wed Aug 28 00:00:00 EST 2013 Wed Aug 28 00:00:00 EST 2013
Faites également attention aux modèles de format. Regardez de plus près
SimpleDateFormat
pour vous assurer que vous n'utilisez pas les mauvais modèles;)la source
SimpleDateFormat("MM-dd-yyyy");
au lieu de
SimpleDateFormat("mm-dd-yyyy");
parce que
MM points Month
,mm points minutes
SimpleDateFormat sm = new SimpleDateFormat("MM-dd-yyyy"); String strDate = sm.format(myDate);
la source
java.util.Date
?'M' (Capital) représente le mois et 'm' (Simple) représente les minutes
Un exemple pendant des mois
'M' -> 7 (without prefix 0 if it is single digit) 'M' -> 12 'MM' -> 07 (with prefix 0 if it is single digit) 'MM' -> 12 'MMM' -> Jul (display with 3 character) 'MMMM' -> December (display with full name)
Un exemple pour quelques minutes
'm' -> 3 (without prefix 0 if it is single digit) 'm' -> 19 'mm' -> 03 (with prefix 0 if it is single digit) 'mm' -> 19
la source
tl; dr
LocalDate.parse( "01-23-2017" , DateTimeFormatter.ofPattern( "MM-dd-uuuu" ) )
Détails
Comme d'autres l'ont mentionné, la
Date
classe n'a pas de format. Il a un compte de millisecondes depuis le début de 1970 en UTC. Sans attaches.java.time
Les autres réponses utilisent d'anciennes classes de date-heure héritées gênantes, désormais supplantées par les classes java.time.
Si vous avez un
java.util.Date
, convertissez-le enInstant
objet. LaInstant
classe représente un moment sur la chronologie en UTC avec une résolution de nanosecondes (jusqu'à neuf (9) chiffres d'une fraction décimale).Fuseau horaire
Les autres réponses ignorent la question cruciale du fuseau horaire. La détermination d'une date nécessite un fuseau horaire. Pour un moment donné, la date varie dans le monde entier par zone. Quelques minutes après minuit à Paris, la France est un nouveau jour, alors qu'il est encore «hier» à Montréal Québec.
Définissez le fuseau horaire selon lequel vous voulez un contexte pour votre
Instant
.ZoneId z = ZoneId.of( "America/Montreal" );
Appliquez le
ZoneId
pour obtenir unZonedDateTime
.LocalDate
Si vous ne vous souciez que de la date sans heure, extrayez un fichier
LocalDate
.Pour générer une chaîne au format standard ISO 8601, AAAA-MM-JJ, appelez simplement
toString
. Les classes java.time utilisent les formats standard par défaut lors de la génération / analyse des chaînes.Si vous souhaitez un format MM-JJ-AAAA, définissez un modèle de mise en forme.
DateTimeFormatter f = DateTimeFormatter.ofPattern( "MM-dd-uuuu" ); String output = localDate.format( f );
Notez que les codes de modèle de formatage sont sensibles à la casse. Le code de la question est incorrectement utilisé
mm
(minute de l'heure) plutôt queMM
(mois de l'année).Utilisez le même
DateTimeFormatter
objet pour l'analyse. Les classes java.time sont thread-safe, vous pouvez donc conserver cet objet et le réutiliser à plusieurs reprises même entre les threads.LocalDate localDate = LocalDate.parse( "01-23-2017" , f );
À propos de java.time
Le framework java.time est intégré à Java 8 et versions ultérieures. Ces classes supplantent les anciens gênants hérités des classes date-heure tels que
java.util.Date
,Calendar
, etSimpleDateFormat
.Le projet Joda-Time , désormais en mode maintenance , conseille la migration vers les classes java.time .
Pour en savoir plus, consultez le didacticiel Oracle . Et recherchez Stack Overflow pour de nombreux exemples et explications. La spécification est JSR 310 .
Où obtenir les classes java.time?
Le projet ThreeTen-Extra étend java.time avec des classes supplémentaires. Ce projet est un terrain d'essai pour d'éventuels futurs ajouts à java.time. Vous trouverez peut - être des classes utiles ici, comme
Interval
,YearWeek
,YearQuarter
et plus .la source
C'est une utilisation simple ci-dessous les codes.
final Date todayDate = new Date(); System.out.println(todayDate); System.out.println(new SimpleDateFormat("MM-dd-yyyy").format(todayDate)); System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(todayDate)); System.out.println(todayDate);
la source
Vous pouvez obtenir le jour, le mois et l'année et les concaténer ou utiliser le format MM-jj-aaaa comme indiqué ci-dessous.
Date date1 = new Date(); String mmddyyyy1 = new SimpleDateFormat("MM-dd-yyyy").format(date1); System.out.println("Formatted Date 1: " + mmddyyyy1); Date date2 = new Date(); Calendar calendar1 = new GregorianCalendar(); calendar1.setTime(date2); int day1 = calendar1.get(Calendar.DAY_OF_MONTH); int month1 = calendar1.get(Calendar.MONTH) + 1; // {0 - 11} int year1 = calendar1.get(Calendar.YEAR); String mmddyyyy2 = ((month1<10)?"0"+month1:month1) + "-" + ((day1<10)?"0"+day1:day1) + "-" + (year1); System.out.println("Formatted Date 2: " + mmddyyyy2); LocalDateTime ldt1 = LocalDateTime.now(); DateTimeFormatter format1 = DateTimeFormatter.ofPattern("MM-dd-yyyy"); String mmddyyyy3 = ldt1.format(format1); System.out.println("Formatted Date 3: " + mmddyyyy3); LocalDateTime ldt2 = LocalDateTime.now(); int day2 = ldt2.getDayOfMonth(); int mont2= ldt2.getMonthValue(); int year2= ldt2.getYear(); String mmddyyyy4 = ((mont2<10)?"0"+mont2:mont2) + "-" + ((day2<10)?"0"+day2:day2) + "-" + (year2); System.out.println("Formatted Date 4: " + mmddyyyy4); LocalDateTime ldt3 = LocalDateTime.of(2020, 6, 11, 14, 30); // int year, int month, int dayOfMonth, int hour, int minute DateTimeFormatter format2 = DateTimeFormatter.ofPattern("MM-dd-yyyy"); String mmddyyyy5 = ldt3.format(format2); System.out.println("Formatted Date 5: " + mmddyyyy5); Calendar calendar2 = Calendar.getInstance(); calendar2.setTime(new Date()); int day3 = calendar2.get(Calendar.DAY_OF_MONTH); // OR Calendar.DATE int month3= calendar2.get(Calendar.MONTH) + 1; int year3 = calendar2.get(Calendar.YEAR); String mmddyyyy6 = ((month3<10)?"0"+month3:month3) + "-" + ((day3<10)?"0"+day3:day3) + "-" + (year3); System.out.println("Formatted Date 6: " + mmddyyyy6); Date date3 = new Date(); LocalDate ld1 = LocalDate.parse(new SimpleDateFormat("yyyy-MM-dd").format(date3)); // Accepts only yyyy-MM-dd int day4 = ld1.getDayOfMonth(); int month4= ld1.getMonthValue(); int year4 = ld1.getYear(); String mmddyyyy7 = ((month4<10)?"0"+month4:month4) + "-" + ((day4<10)?"0"+day4:day4) + "-" + (year4); System.out.println("Formatted Date 7: " + mmddyyyy7); Date date4 = new Date(); int day5 = LocalDate.parse(new SimpleDateFormat("yyyy-MM-dd").format(date4)).getDayOfMonth(); int month5 = LocalDate.parse(new SimpleDateFormat("yyyy-MM-dd").format(date4)).getMonthValue(); int year5 = LocalDate.parse(new SimpleDateFormat("yyyy-MM-dd").format(date4)).getYear(); String mmddyyyy8 = ((month5<10)?"0"+month5:month5) + "-" + ((day5<10)?"0"+day5:day5) + "-" + (year5); System.out.println("Formatted Date 8: " + mmddyyyy8); Date date5 = new Date(); int day6 = Integer.parseInt(new SimpleDateFormat("dd").format(date5)); int month6 = Integer.parseInt(new SimpleDateFormat("MM").format(date5)); int year6 = Integer.parseInt(new SimpleDateFormat("yyyy").format(date5)); String mmddyyyy9 = ((month6<10)?"0"+month6:month6) + "-" + ((day6<10)?"0"+day6:day6) + "-" + (year6);`enter code here` System.out.println("Formatted Date 9: " + mmddyyyy9);
la source
S'il vous plaît changer le petit mois "mm" en capital "MM" cela fonctionnera. Pour référence ci-dessous est l'exemple de code.
Date myDate = new Date(); SimpleDateFormat sm = new SimpleDateFormat("MM-dd-yyyy"); String strDate = sm.format(myDate); Date dt = sm.parse(strDate); System.out.println(strDate);
la source
voir ces ..
date de mise en forme
DateTimeFormatter
date d'analyse
Instant avec zone
la source