56 votes

Obtenez la date d'aujourd'hui en Java à l'heure de minuit

J'ai besoin de créer deux objets de date. Si la date et l'heure actuelles sont le 9 mars 2012 à 11h30, alors

  • l'objet date d1 devrait être 9 mars 2012 12:00 AM
  • l'objet date d2 doit contenir la date actuelle elle-même

La date ne sera pas saisie, c'est la date système.

Mise à jour :

Date dt = new Date();
System.out.print(dt.toString());

donne la date et l'heure actuelles

59voto

Nishant Points 22758
    Calendar c = new GregorianCalendar();
    c.set(Calendar.HOUR_OF_DAY, 0); //anything 0 - 23
    c.set(Calendar.MINUTE, 0);
    c.set(Calendar.SECOND, 0);
    Date d1 = c.getTime(); //the midnight, that's the first second of the day.

devrait être Fri Mar 09 00:00:00 IST 2012

32voto

yen1k Points 286
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm");
System.out.println(sdf.format(date));

21voto

Jens Hoffmann Points 1468

Voici une solution basée sur Java 8, utilisant la nouvelle fonction paquet java.time ( Tutoriel ).

Si vous pouvez utiliser des objets Java 8 dans votre code utiliser LocalDateTime :

LocalDateTime now = LocalDateTime.now(); // current date and time
LocalDateTime midnight = now.toLocalDate().atStartOfDay();

Si vous avez besoin de dates anciennes, c'est à dire java.util.Date :

Convertir le LocalDateTime que vous créez ci-dessus pour Date en utilisant ces conversions :

LocalDateTime -> ZonedDateTime -> Instant -> Date

  1. Appelez atZone(zone) avec un fuseau horaire spécifié (ou ZoneId.systemDefault() pour le fuseau horaire par défaut du système) pour créer une ZonedDateTime ajusté pour DST au besoin.

    ZonedDateTime zdt = midnight.atZone(ZoneId.of("America/Montreal"));
  2. Appelez toInstant() pour convertir le ZonedDateTime à un Instant :

    Instant i = zdt.toInstant()
  3. Enfin, appelez Date.from(instant) pour convertir le Instant à un Date :

    Date d1 = Date.from(i)

En résumé cela ressemblera à ceci pour vous :

LocalDateTime now = LocalDateTime.now(); // current date and time
LocalDateTime midnight = now.toLocalDate().atStartOfDay();
Date d1 = Date.from(midnight.atZone(ZoneId.systemDefault()).toInstant());
Date d2 = Date.from(now.atZone(ZoneId.systemDefault()).toInstant());

Voir aussi section Code date-heure hérité (The Java™ Tutorials) pour l'interopérabilité de la nouvelle java.time avec les anciennes fonctionnalités java.util classes.

10voto

Chandra Sekhar Points 6512
Calendar currentDate = Calendar.getInstance(); //Get the current date
SimpleDateFormat formatter= new SimpleDateFormat("yyyy/MMM/dd HH:mm:ss"); //format it as per your requirement
String dateNow = formatter.format(currentDate.getTime());
System.out.println("Now the date is :=>  " + dateNow);

4voto

heldt Points 1394

Si vous êtes capable d'ajouter des librairies externes à votre projet. Je vous recommande d'essayer Joda-time. Il a une façon très intelligente de travailler avec les dates.

http://joda-time.sourceforge.net/

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X