Cum să obțineți ora curentă în formatul YYYY-MM-DD HH:MI:Sec. Milisecundă format în Java?

Codul de mai jos dă-mi timp curent. Dar ea nu spune nimic despre milisecunde.

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

Am întâlnire în formatul2009-09-22 16:47:08 (YYYY-MM-DD HH:MI:Sec).

Dar vreau sa recuperez ora curentă în format2009-09-22 16:47:08.128 ((YYYY-MM-DD HH:MI:Sec. Ms)- în cazul în care 128 spune milisecundă.

SimpleTextFormat va funcționa bine. Aici, cea mai mică unitate de timp este secunda, dar cum fac rost de milisecunde la fel de bine?

Comentarii la întrebare (2)
Soluția
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Comentarii (8)

Un Java o linie

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

în JDK8 stil

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

Trebuie doar să adăugați milisecundă de câmp în format de dată șir de caractere:

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

De API doc de SimpleDateFormat descrie șir format în detaliu.

Comentarii (0)

încercați acest lucru:-

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

sau

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

tl;dr

Instant.now()
       .toString()

2016-05-06T23:24:25.694 Z

ZonedDateTime.now( 
    ZoneId.of( "America/Montreal" ) 
).format(  DateTimeFormatter.ISO_LOCAL_DATE_TIME )
 .replace( "T" , " " )

2016-05-06 19:24:25.694

java.timp

În Java 8 și mai târziu, avem java.time cadru construit în Java 8 și mai târziu. Aceste noi clase înlocui supărătoare vechi de java.util.Data/.Calendar cursuri. Noile clase sunt inspirate de succes Joda-Time cadru, destinate ca succesorul acestuia, similar în concept, dar re-proiectat. Definit de JSR 310. Prelungită de ThreeTen-Extra, proiect. Vezi Tutorial.

Fi conștienți de faptul că java.timpul este capabil de a nanosecundă rezoluție (9 zecimale într-o fracțiune de secundă), versus milisecunde rezoluție (3 zecimale) de ambele java.util.Data & Joda Timp. Deci, atunci când formatare pentru a afișa doar 3 zecimale, te-ar putea ascunde de date.

Dacă doriți pentru a elimina orice microsecunde sau nanosecunde de date, trunchia.

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

Java.timpul clase de utilizare ISO 8601 format în mod implicit atunci când parsarea/generatoare de siruri de caractere. Un " Z " la sfârșitul este prescurtarea de la `Zulu, și înseamnă UTC.

O Instant reprezintă un moment pe cronologie în UTC, cu rezoluție de până la nanosecunde. Capturarea momentul actual în Java 8 este limitată la milisecunde, cu o nouă implementare în Java 9 captarea până la nanosecunde în funcție de hardware-ul computerului ceas abilitățile lui.

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

2016-05-06T23:24:25.694 Z

Înlocuiți " T "în mijloc cu un spațiu, și" Z " cu nimic, pentru a obține rezultatul dorit.

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

Ca tu nu't pasă inclusiv compensarea sau de fus orar, face o "locale" data-data nu au legătură cu orice localitate special.

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

Joda Timp

Succes Joda-Time library a fost sursa de inspiratie pentru java.cadru de timp. Recomandabil de a migra de la java.timp atunci când este convenabil.

ISO 8601 format include milisecunde, și este setarea implicită pentru Joda-Time 2.4 bibliotecă.

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

Atunci când a alerga...

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

De asemenea, puteți cere pentru milisecunde fracțiune-de-un-al doilea ca număr, dacă este necesar:

int millisOfSecond = myDateTime.getMillisOfSecond ();
Comentarii (0)

Cel mai simplu mod de a fost de a (înainte de Java 8) utilizarea,

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

Dar SimpleDateFormat nu este thread-safe. Nici java.util.Data. Acest lucru va duce la ceea ce duce la potențiale probleme de concurenta pentru utilizatori. Și există multe probleme în aceste modele existente. Pentru a depăși aceste acum în Java 8 avem un pachet separat numit java.timp. Acest Java SE 8 Data și Ora documentul are o bună imagine de ansamblu despre asta.

Deci, în Java 8 ceva de genul de mai jos va face truc (a format data/ora curentă),

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

Și un lucru de remarcat este că a fost dezvoltat cu ajutorul populare treilea partid biblioteca joda-time,

proiectul a fost condus în comun de către autorul Joda-Time (Stephen Colebourne) și Oracle, sub JSR 310, și va apărea în noua Java SE 8 pachetul java.timp.

Dar acum joda-timp devine învechită și a cerut utilizatorilor să migreze la new java.timp.

Rețineți că, din Java SE 8 încoace, utilizatorii sunt rugați să migreze la java.timp (JSR-310) - un miez parte din JDK care înlocuiește acest proiect

Oricum, având în a spus că,

Dacă aveți o Calendar de exemplu, puteți utiliza de mai jos să-l convertească la noua java.timp`,

    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

Dacă ați avut o Întâlnire obiect,

    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

Dacă ai fi avut epoca de milisecunde,

LocalDateTime date =
        LocalDateTime.ofInstant(Instant.ofEpochMilli(epochLongValue), ZoneId.systemDefault());
Comentarii (2)

Mi-ar folosi ceva de genul asta:


String.format("%tF %
Comentarii (0)

Pentru a completa raspunsurile de mai sus, aici este un mic exemplu de lucru de un program care tipărește data și ora curente, inclusiv milisecunde.

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);
    }
}
Comentarii (0)

Utilizați această pentru a obține ora curentă în format specificat :

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

Eu nu't vedea o referire la acest lucru:

SimpleDateFormat f = new SimpleDateFormat("yyyyMMddHHmmssSSS");

format de mai sus este, de asemenea, util.

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

Comentarii (0)

Ans: DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"); ZonedDateTime start = Instant.acum().atZone(ZoneId.systemDefault()); String startTimestamp = a începe.format(dateFormatter);

Comentarii (0)

Doctorul în Java 8 nume fracțiune de secundă , în timp ce în Java 6 a fost numit milisecunde. Acest lucru m-a adus confuzie

Comentarii (0)

Puteți pur și simplu să-l în formatul dorit.

String date = String.valueOf(android.text.format.DateFormat.format("dd-MM-yyyy", new java.util.Date()));
Comentarii (1)