Poniższy kod podaje mi aktualny czas. Ale nie mówi nic o milisekundach.
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;
}
Dostaję datę w formacie 2009-09-22 16:47:08
(RRRR-MM-DD GG: MI: Sec) .
Ale chcę pobrać bieżący czas w formacie 2009-09-22 16:47:08.128
((RRRR-MM-DD GG: MI: Sek. Ms) - gdzie 128 wskazuje milisekundę.
SimpleTextFormat
będzie dobrze działać. Tutaj najniższa jednostka czasu jest druga, ale jak mogę uzyskać milisekundę?
java.util.Date
,java.util.Calendar
ijava.text.SimpleTextFormat
są teraz spuścizny , wyparta przez java.time klas. Zobacz samouczek Oracle .Odpowiedzi:
źródło
toString(String format)
metoda?java.util.Date
Nie wydaje się to mieć. Masz na myśli interfejs API Joda Time? Ale jedną z możliwych korzyści jest ponowne użycie tego samego obiektu formatera. Innym jest to, że nie musisz dodawać API - klasa Date jest standardową klasą biblioteki Java.LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSS"))
Jedna linijka Java
w stylu JDK8
źródło
Musisz tylko dodać pole milisekundy do ciągu formatu daty:
Dokument API SimpleDateFormat szczegółowo opisuje ciąg formatu.
źródło
Spróbuj tego:-
http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html
lub
źródło
tl; dr
java.time
W Javie 8 i nowszych mamy framework java.time wbudowany w Javę 8 i później. Te nowe klasy zastępują kłopotliwe stare klasy java.util.Date/.Calendar. Nowe klasy inspirowane są bardzo udanym frameworkiem Joda-Time , przeznaczonym jako jego następca, podobnym w koncepcji, ale przebudowanym. Zdefiniowane przez JSR 310 . Rozszerzony o projekt ThreeTen-Extra . Zobacz samouczek .
Należy pamiętać, że java.time jest zdolny do rozdzielczości nanosekundowej (9 miejsc dziesiętnych w ułamku sekundy), w porównaniu do rozdzielczości milisekundowej (3 miejsca dziesiętne) zarówno java.util.Date & Joda-Time. Dlatego podczas formatowania w celu wyświetlenia tylko 3 miejsc po przecinku możesz ukrywać dane.
Jeśli chcesz wyeliminować z danych jakieś mikrosekundy lub nanosekundy, obetnij.
Klasy java.time domyślnie używają formatu ISO 8601 podczas parsowania / generowania ciągów. A
Z
na końcu jest skrótem odZulu
i oznacza UTC .An
Instant
reprezentuje moment na osi czasu w UTC z rozdzielczością do nanosekund . Uchwycenie bieżącego momentu w Javie 8 jest ograniczone do milisekund , a nowa implementacja w Javie 9 przechwytuje do nanosekund w zależności od możliwości zegara sprzętowego komputera.Zamień
T
środek na spację, a naZ
nic, aby uzyskać pożądaną wydajność.Ponieważ nie chcesz uwzględniać przesunięcia ani strefy czasowej, ustaw „lokalną” datę i czas niezwiązaną z żadną konkretną lokalizacją.
Joda-Time
Bardzo popularna biblioteka Joda-Time była inspiracją dla frameworku java.time. Zaleca się migrację do java.time, gdy jest to wygodne.
Format ISO 8601 obejmuje milisekundy i jest domyślny dla biblioteki Joda-Time 2.4.
Po uruchomieniu…
Możesz też poprosić o ułamek sekundy w milisekundach, jeśli to konieczne:
źródło
Najłatwiejszym sposobem było (przed Java 8) użycie,
Ale SimpleDateFormat nie jest bezpieczny dla wątków. Ani java.util.Date . Doprowadzi to do potencjalnych problemów z współbieżnością dla użytkowników. I istnieje wiele problemów w tych istniejących projektach. Aby temu zaradzić teraz w Javie 8, mamy osobny pakiet o nazwie java.time . Ten dokument dotyczący daty i godziny Java SE 8 zawiera dobry przegląd.
Tak więc w Javie 8 coś takiego jak poniżej (aby sformatować bieżącą datę / godzinę),
I jedną rzeczą godną uwagi jest to, że został opracowany przy pomocy popularnej biblioteki joda-time ,
Ale teraz
joda-time
staje się przestarzałe i poprosił użytkowników o migrację do nowejjava.time
.W każdym razie powiedziawszy to,
Jeśli masz instancję kalendarza, której możesz użyć poniżej, aby przekonwertować ją na nową
java.time
,Jeśli miałeś obiekt Date,
Jeśli masz epokę milisekund,
źródło
Użyłbym czegoś takiego:
Zmienna
dateTime
może być dowolną wartością daty i / lub godziny, patrz JavaDoc dlaFormatter
.źródło
Aby uzupełnić powyższe odpowiedzi, oto mały działający przykład programu, który drukuje bieżącą godzinę i datę, w tym milisekundy.
źródło
Użyj tego, aby uzyskać swój aktualny czas w określonym formacie:
źródło
java.util.Date
,java.util.Calendar
ijava.text.SimpleDateFormat
są teraz spuścizną , wyparte przez klasy java.time wbudowane w Javę 8 i nowsze wersje . Zobacz samouczek Oracle .Mam tutaj prosty przykład do wyświetlania daty i godziny w Millisecond ......
źródło
Nie widzę odniesienia do tego:
powyższy format jest również przydatny.
http://www.java2s.com/Tutorials/Java/Date/Date_Format/Format_date_in_yyyyMMddHHmmssSSS_format_in_Java.htm
źródło
Odp .:
źródło
Dokument w Javie 8 nazywa go ułamkiem sekundy , podczas gdy w Javie 6 został nazwany milisekundą . Doprowadziło mnie to do zamieszania
źródło
java.text (przed java 8)
java.time
źródło
Możesz po prostu pobrać go w żądanym formacie.
źródło