tl; dr
Instant.now()
.toString()
2016-05-06T23: 24: 25.694Z
ZonedDateTime
.now
(
ZoneId.of( "America/Montreal" )
)
.format( DateTimeFormatter.ISO_LOCAL_DATE_TIME )
.replace( "T" , " " )
2016-05-06 19: 24: 25.694
java.time
Dans Java 8 et versions ultérieures, le framework java.time est intégré à Java 8 et versions ultérieures. Ces nouvelles classes remplacent les anciennes classes gênantes java.util.Date/.Calendar. Les nouvelles classes sont inspirées par le framework Joda-Time très réussi , destiné à lui succéder, de concept similaire mais ré-architecturé. Défini par JSR 310 . Prolongé par le projet ThreeTen-Extra . Voir le tutoriel .
Sachez que java.time est capable d'une résolution en nanosecondes (9 décimales en fraction de seconde), par rapport à la résolution en millisecondes (3 décimales) des deux java.util.Date et Joda-Time. Ainsi, lors du formatage pour afficher uniquement 3 décimales, vous pouvez masquer des données.
Si vous souhaitez éliminer toutes les microsecondes ou nanosecondes de vos données, tronquez.
Instant instant2 = instant.truncatedTo( ChronoUnit.MILLIS ) ;
Les classes java.time utilisent le format ISO 8601 par défaut lors de l'analyse / génération de chaînes. A Z
à la fin est l'abréviation de Zulu
et signifie UTC .
An Instant
représente un moment sur la timeline en UTC avec une résolution allant jusqu'à nanosecondes . La capture de l'instant présent dans Java 8 est limitée à des millisecondes , avec une nouvelle implémentation dans Java 9 capturant jusqu'à nanosecondes en fonction des capacités de l'horloge matérielle de votre ordinateur.
Instant instant = Instant.now (); // Current date-time in UTC.
String output = instant.toString ();
2016-05-06T23: 24: 25.694Z
Remplacez le T
milieu par un espace et le Z
rien, pour obtenir la sortie souhaitée.
String output = instant.toString ().replace ( "T" , " " ).replace( "Z" , "" ; // Replace 'T', delete 'Z'. I recommend leaving the `Z` or any other such [offset-from-UTC][7] or [time zone][7] indicator to make the meaning clear, but your choice of course.
2016-05-06 23: 24: 25.694
Comme vous ne vous souciez pas d'inclure le décalage ou le fuseau horaire, définissez une date-heure "locale" sans rapport avec une localité particulière.
String output = LocalDateTime.now ( ).toString ().replace ( "T", " " );
Joda-Time
La bibliothèque Joda-Time très réussie a été l'inspiration pour le framework java.time. Il est conseillé de migrer vers java.time quand cela vous convient.
Le format ISO 8601 comprend des millisecondes et est la valeur par défaut pour la bibliothèque Joda-Time 2.4.
System.out.println( "Now: " + new DateTime ( DateTimeZone.UTC ) );
Lors de l'exécution ...
Now: 2013-11-26T20:25:12.014Z
En outre, vous pouvez demander la fraction de millisecondes de seconde sous forme de nombre, si nécessaire:
int millisOfSecond = myDateTime.getMillisOfSecond ();