281 votes

Java, obtenir la date sans temps

Continuant à partir de cette discussion: programme java pour obtenir la date actuelle sans horodatage

Quel est le moyen le plus efficace pour obtenir un objet Date, sans le temps? Est-il un autre moyen que ces deux?

    //method 1
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");      
    Date dateWithoutTime = sdf.parse(sdf.format(new Date()));

    //method 2
    Calendar cal = Calendar.getInstance();
    cal.set(Calendar.HOUR_OF_DAY, 0);
    cal.set(Calendar.MINUTE, 0);
    cal.set(Calendar.SECOND, 0);
    cal.set(Calendar.MILLISECOND, 0);
    dateWithoutTime = cal.getTime();

Mise à jour:

1) je savais à propos de Joda, je suis juste essayer d'éviter les surcoûts de la bibliothèque pour une si simple (je pense) de la tâche. Mais sur la base des réponses jusqu'à présent Joda semble extrêmement populaire, de sorte que je puisse l'examiner.

2) Par efficace j'ai les moyens, je veux éviter d'objet temporaire String création utilisée par method 1, en attendant method 2 semble être un hack au lieu d'une solution.

118voto

Jon Skeet Points 692016

Avez-vous absolument avoir à utiliser java.util.Date? Je serais à fond vous recommandons d'utiliser Joda Time à la place. En particulier, bien que la Date et le Calendrier de toujours représenter un moment particulier dans le temps, sans la notion de "juste une date", Joda Time n' ont un type de représentation de cette (LocalDate). Votre code sera beaucoup plus clair si vous êtes en mesure d'utiliser des types qui représentent ce que vous êtes en train d'essayer de faire.

Il y a beaucoup, beaucoup d'autres raisons d'utiliser Joda Time au lieu de type intégré - il est généralement beaucoup mieux de l'API. Vous pouvez toujours convertir vers/à partir d'un java.util.Date dans les limites de votre propre code si vous en avez besoin, par exemple pour la base de données d'interaction.

80voto

Shobbi Points 142

Voici ce que j’ai utilisé pour obtenir la date d’aujourd'hui avec le temps, la valeur `` :

69voto

JoGo Points 81

Ancien sujet mais...

Vous pouvez utiliser le DateUtils.truncate de la bibliothèque Apache Commons.

Exemple : DateUtils.truncate (new Date(), impossible)

Qui concerne

25voto

Roman Points 21807

La façon la plus simple :

23voto

Brian Agnew Points 143181

La réponse standard à ces questions est d’utiliser le Temps de Joda. L’API est mieux et si vous utilisez les analyseurs et les formateurs vous pouvez éviter l’absence non intuitive de la sécurité des threads de `` .

À l’aide de Joda signifie que vous pouvez tout simplement faire :

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