Le code ci-dessous me donne l'heure actuelle. Mais cela ne dit rien sur les millisecondes.
public static String getCurrentTimeStamp() {
SimpleDateFormat sdfDate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//dd/MM/yyyy
Date now = new Date();
String strDate = sdfDate.format(now);
return strDate;
}
Je reçois la date au format 2009-09-22 16:47:08
(AAAA-MM-JJ HH: MI: Sec) .
Mais je veux récupérer l'heure actuelle au format 2009-09-22 16:47:08.128
((AAAA-MM-JJ HH: MI: Sec.Ms) - où 128 indique la milliseconde.
SimpleTextFormat
fonctionnera bien. Ici, l'unité de temps la plus basse est la seconde, mais comment puis-je également obtenir la milliseconde?
java.util.Date
,java.util.Calendar
etjava.text.SimpleTextFormat
sont maintenant héritage , supplanté par les java.time classes. Voir Tutoriel par Oracle .Réponses:
la source
toString(String format)
méthode? Lejava.util.Date
ne semble pas l'avoir. Faites-vous référence à l'API Joda Time? Mais un avantage possible est la réutilisation du même objet formateur. Un autre est que vous n'avez pas à ajouter d'API - la classe Date est une classe de bibliothèque Java standard.LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"))
Une doublure Java
dans le style JDK8
la source
Il vous suffit d'ajouter le champ en millisecondes dans votre chaîne de format de date:
Le document API de SimpleDateFormat décrit la chaîne de format en détail.
la source
essaye ça:-
http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
ou
la source
tl; dr
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.
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 deZulu
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.Remplacez le
T
milieu par un espace et leZ
rien, pour obtenir la sortie souhaitée.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.
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.
Lors de l'exécution ...
En outre, vous pouvez demander la fraction de millisecondes de seconde sous forme de nombre, si nécessaire:
la source
J'utiliserais quelque chose comme ça:
La variable
dateTime
peut avoir n'importe quelle valeur de date et / ou d'heure, voir JavaDoc pourFormatter
.la source
Le moyen le plus simple était (avant Java 8) d'utiliser,
Mais SimpleDateFormat n'est pas thread-safe. Ni java.util.Date . Cela conduira à des problèmes de concurrence potentiels pour les utilisateurs. Et il existe de nombreux problèmes dans ces conceptions existantes. Pour les surmonter maintenant dans Java 8, nous avons un package séparé appelé java.time . Ce document de date et d'heure Java SE 8 a une bonne vue d'ensemble à ce sujet.
Donc, en Java 8, quelque chose comme ci-dessous fera l'affaire (pour formater la date / heure actuelle),
Et une chose à noter est qu'il a été développé avec l'aide de la populaire bibliothèque tierce joda-time ,
Mais maintenant, le
joda-time
devient obsolète et a demandé aux utilisateurs de migrer vers le nouveaujava.time
.Quoi qu'il en soit, cela étant dit,
Si vous avez une instance d' agenda que vous pouvez utiliser ci-dessous pour la convertir en nouvelle
java.time
,Si vous aviez un objet Date,
Si vous venez d'avoir l'époque millisecondes,
la source
Pour compléter les réponses ci-dessus, voici un petit exemple de travail d'un programme qui imprime l'heure et la date actuelles, y compris les millisecondes.
la source
Utilisez ceci pour obtenir votre heure actuelle dans le format spécifié:
la source
java.util.Date
,java.util.Calendar
etjava.text.SimpleDateFormat
sont désormais héritées , supplantées par les classes java.time intégrées à Java 8 et versions ultérieures. Voir Tutoriel par Oracle .J'ai un exemple simple ici pour afficher la date et l'heure avec la milliseconde ......
la source
Je ne vois aucune référence à cela:
le format ci-dessus est également utile.
http://www.java2s.com/Tutorials/Java/Date/Date_Format/Format_date_in_yyyyMMddHHmmssSSS_format_in_Java.htm
la source
Rép:
la source
Le document en Java 8 le nomme en une fraction de seconde , tandis qu'en Java 6 il a été nommé milliseconde . Cela m'a amené à la confusion
la source
java.text (avant java 8)
java.time
la source
Vous pouvez simplement l'obtenir dans le format que vous souhaitez.
la source