it-swarm.com.de

Wie erhält man die aktuelle Uhrzeit im Format JJJJ-MM-TT HH: MI: Sec.Millisecond in Java?

Der folgende Code gibt die aktuelle Uhrzeit an. Es sagt jedoch nichts über Millisekunden aus. 

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;
}

Ich bekomme Datum im Format 2009-09-22 16:47:08 (JJJJ-MM-TT HH: MI: Sec) .

Aber ich möchte die aktuelle Uhrzeit im Format 2009-09-22 16:47:08.128 ((JJJJ-MM-TT HH: MI: Sec.Ms) abrufen - wobei 128 die Millisekunde angibt.

SimpleTextFormat wird gut funktionieren. Hier ist die niedrigste Zeiteinheit die Sekunde, aber wie bekomme ich auch Millisekunde?

543
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
845
JayJay

Ein Java-Liner

public String getCurrentTimeStamp() {
    return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS").format(new Date());
}

im JDK8-Stil

public String getCurrentLocalDateTimeStamp() {
    return LocalDateTime.now()
       .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));
}
176
Joram

Sie müssen nur das Millisekundenfeld in Ihrer Datumsformatzeichenfolge hinzufügen:

new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

Das API-Dokument von SimpleDateFormat beschreibt die Formatzeichenfolge im Detail.

97

versuche dies:-

http://docs.Oracle.com/javase/6/docs/api/Java/text/SimpleDateFormat.html

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss.SSS");
Date date = new Date();
System.out.println(dateFormat.format(date));

oder

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();
System.out.println(dateFormat.format(cal.getTime()));
38
duggu

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

In Java 8 und höher haben wir das Java.time - Framework in Java 8 und höher eingebaut. Diese neuen Klassen ersetzen die lästigen alten Java.util.Date/.Calendar-Klassen. Die neuen Klassen sind vom sehr erfolgreichen Joda-Time Framework inspiriert, das als Nachfolger gedacht ist, im Konzept ähnlich ist, aber neu gestaltet wurde. Definiert durch JSR 310 . Erweitert um das Projekt ThreeTen-Extra . Siehe das Tutorial .

Beachten Sie, dass Java.time Nanosekunden Auflösung (9 Dezimalstellen in Sekundenbruchteilen) gegenüber der Millisekunde Auflösung (3 Dezimalstellen) von Java.util.Date & Joda-Time unterstützt. Wenn Sie also nur 3 Dezimalstellen formatieren, können Sie Daten ausblenden.

Wenn Sie Mikrosekunden oder Nanosekunden aus Ihren Daten entfernen möchten, schneiden Sie sie ab.

Instant instant2 = instant.truncatedTo( ChronoUnit.MILLIS ) ;

Die Java.time-Klassen verwenden standardmäßig das ISO 8601 - Format, wenn Strings analysiert/generiert werden. Eine Z am Ende ist eine Abkürzung für Zulu und bedeutet UTC

Eine Instant steht für einen Moment auf der Zeitleiste in UTC mit einer Auflösung von bis zu Nanosekunden . Das Erfassen des aktuellen Moments in Java 8 ist auf Millisekunden beschränkt , wobei eine neue Implementierung in Java 9 bis zu Nanosekunden aufnimmt, je nach den Fähigkeiten der Hardware-Uhr Ihres Computers.

Instant instant = Instant.now (); // Current date-time in UTC.
String output = instant.toString ();

2016-05-06T23: 24: 25.694Z

Ersetzen Sie die Variable T durch ein Leerzeichen und die Variable Z durch nichts, um die gewünschte Ausgabe zu erhalten. 

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

Da es Ihnen nicht wichtig ist, den Versatz oder die Zeitzone einzubeziehen, machen Sie ein "lokales" Datum und eine Uhrzeit, die sich nicht auf einen bestimmten Ort beziehen.

String output = LocalDateTime.now ( ).toString ().replace ( "T", " " );

Joda-Zeit

Die überaus erfolgreiche Joda-Time-Bibliothek war die Inspiration für das Java.time-Framework. Ratsam ist eine Migration auf Java.time, wenn dies sinnvoll ist.

Das Format ISO 8601 enthält Millisekunden und ist die Standardeinstellung für die Bibliothek Joda-Time 2.4.

System.out.println( "Now: " + new DateTime ( DateTimeZone.UTC ) );

Wann laufen…

Now: 2013-11-26T20:25:12.014Z

Bei Bedarf können Sie auch den Millisekunden-Sekundenbruchteil als Zahl abfragen:

int millisOfSecond = myDateTime.getMillisOfSecond ();
24
Basil Bourque

Der einfachste Weg war (vor Java 8) zu verwenden,

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");

SimpleDateFormat ist jedoch nicht threadsicher. Weder Java.util.Date . Dies führt zu möglichen Parallelitätsproblemen für Benutzer. Und es gibt viele Probleme in diesen bestehenden Designs. Um diese Probleme jetzt in Java 8 zu überwinden, haben wir ein separates Paket namens Java.time . Dieses Java SE 8-Dokument mit Datum und Uhrzeit bietet einen guten Überblick.

In Java 8 wird also etwas wie das Folgende tun (um das aktuelle Datum/die aktuelle Uhrzeit zu formatieren),

LocalDateTime.now()
   .format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));

Bemerkenswert ist, dass es mit Hilfe der beliebten Drittanbieter-Bibliothek joda-time entwickelt wurde.

Das Projekt wurde gemeinsam von den Autoren Joda-Time (Stephen Colebourne) und Oracle unter JSR 310 durchgeführt und wird im neuen Java SE 8-Paket Java.time erscheinen.

Nun wird der joda-time jedoch veraltet und die Benutzer werden aufgefordert, auf den neuen Java.time zu migrieren.

Beachten Sie, dass Benutzer ab Java SE 8 aufgefordert werden, zu Java.time (JSR-310) zu migrieren - einem Kernbestandteil des JDK, der dieses Projekt ersetzt

Wie auch immer, das gesagt,

Wenn Sie eine Calendar -Instanz haben, können Sie diese unten in den neuen Java.time konvertieren.

    Calendar calendar = Calendar.getInstance();
    long longValue = calendar.getTimeInMillis();         

    LocalDateTime date =
            LocalDateTime.ofInstant(Instant.ofEpochMilli(longValue), ZoneId.systemDefault());
    String formattedString = date.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));

    System.out.println(date.toString()); // 2018-03-06T15:56:53.634
    System.out.println(formattedString); // 2018-03-06 15:56:53.634

Wenn Sie ein Date-Objekt hatten,

    Date date = new Date();
    long longValue2 = date.getTime();

    LocalDateTime dateTime =
            LocalDateTime.ofInstant(Instant.ofEpochMilli(longValue2), ZoneId.systemDefault());
    String formattedString = dateTime.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"));

    System.out.println(dateTime.toString()); // 2018-03-06T15:59:30.278
    System.out.println(formattedString);     // 2018-03-06 15:59:30.278

Wenn Sie gerade die Epoche Millisekunden hatten,

LocalDateTime date =
        LocalDateTime.ofInstant(Instant.ofEpochMilli(epochLongValue), ZoneId.systemDefault());
7
prime

Ich würde so etwas verwenden:

String.format("%tF %<tT.%<tL", dateTime);

Die Variable dateTime kann ein beliebiger Datums- und/oder Zeitwert sein, siehe JavaDoc für Formatter .

6
Usagi Miyamoto

Um die obigen Antworten zu ergänzen, finden Sie hier ein kleines Arbeitsbeispiel eines Programms, das die aktuelle Uhrzeit und das aktuelle Datum einschließlich Millisekunden ausgibt.

import Java.text.SimpleDateFormat;
import Java.util.Date;

public class test {
    public static void main(String argv[]){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
        Date now = new Date();
        String strDate = sdf.format(now);
        System.out.println(strDate);
    }
}

4
ttb

Sie können es einfach in dem gewünschten Format erhalten.

String date = String.valueOf(Android.text.format.DateFormat.format("dd-MM-yyyy", new Java.util.Date()));
0
Hardik Lakhani

Das Dokument in Java 8 nennt es Sekundenbruchteil , während es in Java 6 Millisekunde heißt. Das brachte mich zur Verwirrung

0
ejaenv

Verwenden Sie diese Option, um Ihre aktuelle Uhrzeit im angegebenen Format abzurufen: 

 DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
 System.out.print(dateFormat.format(System.currentTimeMillis()));  }
0

Ich sehe keinen Hinweis darauf:

SimpleDateFormat f = new SimpleDateFormat("yyyyMMddHHmmssSSS");

das obige Format ist ebenfalls nützlich.

http://www.Java2s.com/Tutorials/Java/Date/Date_Format/Format_date_in_yyyyMMddHHmmssSSS_format_in_Java.htm

0
Smart Coder