J'ai besoin d'un objet de date pour la date 2014-02-11. Je ne peux pas le créer directement comme ça,
Date myDate = new Date(2014, 02, 11);
Alors je fais comme suit,
Calendar myCalendar = new GregorianCalendar(2014, 2, 11);
Date myDate = myCalendar.getTime();
Existe-t-il un moyen simple de créer un objet de date en Java?
Premier Gotcha: le fait de passer un mois 2 peut vous donner quelque chose d'inattendu: le mois est basé sur zéro, ce qui signifie que 2 correspond en fait à mars.
Je ne sais pas quelle est la méthode "facile" que vous recherchez, car j'estime que l'utilisation de Calendar est déjà assez simple.
N'oubliez pas d'utiliser les constantes correctes pour le mois:
Date date = new GregorianCalendar(2014, Calendar.FEBRUARY, 11).getTime();
Une autre méthode consiste à utiliser DateFormat, pour lequel j’ai habituellement un util comme ceci:
public static Date parseDate(String date) {
try {
return new SimpleDateFormat("yyyy-MM-dd").parse(date);
} catch (ParseException e) {
return null;
}
}
pour que je puisse simplement écrire
Date myDate = parseDate("2014-02-14");
Encore une autre solution que je préfère: n’utilisez plus Java Date/Calendar. Basculez sur JODA Time ou Java Time (alias JSR310, disponible dans JDK 8+). Vous pouvez utiliser LocalDate
pour représenter une date, qui peut être facilement créée par
LocalDate myDate =LocalDate.parse("2014-02-14");
// or
LocalDate myDate2 = new LocalDate(2014, 2, 14);
// or, in JDK 8+ Time
LocalDate myDate3 = LocalDate.of(2014, 2, 14);
Je pense que la meilleure façon serait d'utiliser un objet SimpleDateFormat
.
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String dateString = "2014-02-11";
Date dateObject = sdf.parse(dateString); // Handle the ParseException here
De Java8:
import Java.time.Instant;
import Java.util.Date;
Date date = Date.from(Instant.parse("2000-01-01T00:00:00.000Z"))
Essaye ça
Calendar cal = Calendar.getInstance();
Date todayDate = new Date();
cal.setTime(todayDate);
// Set time fields to zero
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
todayDate = cal.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("MMM dd yyyy HH:mm:ss",Locale.ENGLISH);// format as u want
try
{
String datestart="June 14 2018 16:02:37";
cal.setTime(sdf.parse(datestart));// all done
}catch (ParseException e)
{
e.printStackTrace();
}