2017-03-27 2 views
-1

Je me demande s'il y a un String statique ou DateFormat n'importe où dans la bibliothèque Java standard pour les dates de mise en forme 'complètement'. Par complètement, je veux dire la date et l'heure, y compris les millisecondes et le fuseau horaire, quelque chose le long des lignes de "dd MMM yyyy HH:mm:ss.SSS zzz". Il est facile de déclarer la chaîne moi-même, mais ce serait bien si je n'avais pas besoin de le faire pour tous les projets que j'utilise et qui nécessitent une analyse de la date à la milliseconde près. J'ai été incapable d'en trouver un jusqu'à présent. En passant, je pense qu'il est un peu idiot que java.util.Date#toString() ne compte pas pour les millisecondes lorsque la classe qu'il représente le fait.DateFormat avec millisecondes dans la bibliothèque Java standard?

Édition - Malheureusement, ce n'est pas aussi simple que de commencer la conversion à l'utilisation de DateTime, car ce n'est pas quelque chose qui est sous mon contrôle. Je suis le 2ème développeur le plus jeune du projet. Je voudrais aimer pour utiliser DateTime aller de l'avant, mais sans le soutien de mon superviseur, je ne peux pas.

+0

double possible: http://stackoverflow.com/questions/1459656/how-to- get-the-current-time-in-aaaa-mm-jj-millisec-millisecond-format-in-java – c0der

+0

@ c0der Je ne demande pas comment formater les dates. Je demande s'il y a un format statique quelque part qui inclut des millisecondes. – lucasvw

+0

La méthode 'java.util.Date :: toString' ne convient pas pour une utilisation productive. Vous devez utiliser 'DateFormat' pour générer des chaînes. Mieux encore, évitez entièrement ces classes de date-heure héritées gênantes et utilisez plutôt les classes java.time. –

Répondre

2

également pour Java 8 Date Heure Api vous pouvez utiliser

LocalDateTime.now().format(DateTimeFormatter.ISO_DATE_TIME); 

pour de tels résultats

2017-03-27T20:46:03.852 
+0

Ouais, je préfère de loin l'implémentation de DateTime, mais malheureusement beaucoup de mes projets au travail sont hérités et ne seront pas convertis de sitôt:/merci bien! – lucasvw

+1

@lucasvw Aucune conversion nécessaire. Vous pouvez utiliser java.time dans un nouveau code tout en laissant l'ancien code intact avec les appels aux classes héritées. Lorsque les anciens et nouveaux codes se chevauchent, utilisez les nouvelles méthodes de conversion ajoutées aux anciennes classes héritées pour déplacer les données d'avant en arrière. Si vous utilisez Java 6 ou Java 7 plutôt que Java 8 et les versions ultérieures, le projet [* ThreeTen-Backport *] (http://www.threeten.org/threetenbp/) vous apporte la plupart des fonctionnalités de java.time. Tout cela vaut la peine car (a) les classes héritées sont vraiment mauvaises, un désordre sanglant, et (b) les classes java.time sont vraiment une amélioration énorme. –

+1

@anbat 'LocalDateTime' perd intentionnellement tout fuseau horaire ou décalage des données UTC. Généralement préférable de conserver ces informations utiles. Au lieu de 'LocalDateTime', utilisez' Instant.now() 'pour UTC ou' ZonedDateTime.now (ZoneId) 'pour un fuseau horaire spécifique. –