web-dev-qa-db-fra.com

Comment créer un objet Date avec des valeurs en java

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?

53

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);
72
Adrian Shum

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
8
edubriguenti

De Java8: 

import Java.time.Instant;
import Java.util.Date;

Date date = Date.from(Instant.parse("2000-01-01T00:00:00.000Z"))
4
Tody.Lu

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();
1
Selva
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();
}
0
Syed Danish Haider