java.time
Mamy nową technologię dla tego problemu: ram java.time wbudowany w Java 8 i późniejszych.
Twój ciąg wejściowy jest w standardowym formacie ISO 8601. Ten standard jest domyślnie używany w klasach java.time do analizowania/generowania tekstowych reprezentacji wartości daty i godziny.
OffsetDateTime odt = OffsetDateTime.parse("2012-10-01T09:45:00.000+02:00");
Twoje pytanie sugeruje, że chcesz skrócić do drugiej sekundy.
OffsetDateTime odtTruncatedToWholeSecond = odt.truncatedTo(ChronoUnit.SECONDS);
Wygląda na to, że chcesz pominąć informacje o przesunięciu i strefie czasowej. Definiuje to wstępnie zdefiniowany formatator DateTimeFormatter.ISO_LOCAL_DATE_TIME
.
I najwyraźniej chcesz użyć spacji w środku zamiast standardowego T
. Mógłbyś zdefiniować swój własny formatter, ale po prostu wykonałbym manipulację strunami, aby zastąpić T
przestrzenią.
String output = odtTruncatedToWholeSecond.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME).replace("T" , " ");
Wystarczy String Manipulacje
Jak Komentuj pytanie sugeruje, ściśle mówiąc można osiągnąć swój cel pracując tylko z łańcuchami i nie konwersji do wszelkich obiektów Date-Time. Ale podaję tę odpowiedź tutaj zakładając, że możesz mieć inną logikę biznesową do pracy z tymi wartościami daty i czasu.
O java.time
Ramy java.time jest wbudowana w Java 8 i późniejszych. Te klasy zastępują kłopotliwe stare klasy dat-czasu, takie jak java.util.Date
, Calendar
, & SimpleDateFormat
.
Projekt Joda-Time, teraz w maintenance mode, zaleca migrację do klas java.time. Aby uzyskać więcej informacji, zobacz
. I wyszukaj Stack Overflow dla wielu przykładów i objaśnień. Specyfikacja to JSR 310.
Użytkownik może wymieniać obiekty java.time bezpośrednio z bazą danych. Użyj JDBC driver zgodnego z JDBC 4.2 lub nowszym. Nie ma potrzeby ciągi, nie ma potrzeby klas java.sql.*
.
Gdzie można uzyskać lekcje java.time?
- Java SE 8, Java SE 9, a później
- wbudowanej.
- Część standardowego interfejsu API języka Java z pakietem implementacji.
- Java 9 dodaje kilka drobnych funkcji i poprawek.
- Java SE 6 i Java SE 7
- Znaczna część funkcjonalności java.time jest back-przeniesiony do Java 6 & 7 w ThreeTen-Backport.
- Android
- Późniejsze wersje Androida wdrożeń wiązce klas java.time.
- Dla wcześniejszego systemu Android projekt ThreeTenABP dostosowuje ThreeTen-Backport (wymieniony powyżej). Zobacz How to use ThreeTenABP….
Projekt ThreeTen-Extra rozciąga java.time z dodatkowych zajęć. Ten projekt jest poligonem wskazującym na możliwe przyszłe dodatki do java.time. Możesz znaleźć tutaj kilka użytecznych klas, takich jak Interval
, YearWeek
, YearQuarter
i more.
Substringing znacznie szybciej/prostsze niż konwersja do/z obiektu daty. Po prostu dzieli się oryginał na dwa podciągi (stałe przesunięcia), a następnie łączy się razem z odstępem między. –
Dlaczego tak jest? Mogę analizować do ponad 100 dat za jednym razem. – Gooey
Nie sądzisz, że dwie operacje na podłańcuchach z zakodowanymi na stałe kombinacjami i kilkoma opcjami konkatenacji byłyby szybsze niż skonstruowanie i wykonanie dwóch formatów daty? –