tl; dr
LocalDate.of( 2018 , Month.JANUARY , 23 )
.format( DateTimeFormatter.ofPattern( “uuuu-MM-EEE” , Locale.US ) )
java.time
Nowoczesne podejście wykorzystuje klasy java.time.
LocalDate ld = LocalDate.of( 2018 , Month.JANUARY , 23 ) ;
Zwróć uwagę, jak określamy, na Locale
przykład, Locale.CANADA_FRENCH
aby określić ludzki język używany do tłumaczenia nazwy dnia.
DateTimeFormatter f = DateTimeFormatter.ofPattern( “uuuu-MM-EEE” , Locale.US ) ;
String output = ld.format( f ) ;
ISO 8601
Nawiasem mówiąc, może być zainteresowany w normie ISO 8601 tygodni schematu numeracji: yyyy-Www-d
.
2018-W01-2
Tydzień # 1 to pierwszy czwartek roku kalendarzowego. Tydzień zaczyna się w poniedziałek. Rok ma 52 lub 53 tygodnie. Ostatnie / pierwsze dni roku kalendarzowego mogą wylądować w kolejnym / poprzednim roku tygodniowym.
Pojedyncza cyfra na końcu to dzień tygodnia, 1-7 od poniedziałku do niedzieli.
Dodaj klasę biblioteki ThreeTen-Extra do projektu dla YearWeek
klasy.
Informacje o java.time
Struktura java.time jest wbudowana w Javę 8 i nowsze. Klasy te kłopotliwe zastąpić stary starszych klas Date-Time, takich jak java.util.Date
, Calendar
, i SimpleDateFormat
.
Projekt Joda-Time , obecnie w trybie konserwacji , zaleca migrację do klas java.time .
Aby dowiedzieć się więcej, zobacz samouczek Oracle . I przeszukaj Stack Overflow, aby znaleźć wiele przykładów i wyjaśnień. Specyfikacja to JSR 310 .
Skąd wziąć klasy java.time?
- Java SE 8 , Java SE 9 i nowsze
- Wbudowany.
- Część standardowego interfejsu API języka Java z dołączoną implementacją.
- Java 9 dodaje kilka drobnych funkcji i poprawek.
- Java SE 6 i Java SE 7
- Android
- Późniejsze wersje implementacji klas java.time w pakietach Androida.
- Na wcześniejszym Androidzie ThreeTenABP projekt dostosowuje ThreeTen-backportu (wymienione powyżej). Zobacz Jak używać ThreeTenABP… .
Projekt ThreeTen-Extra rozszerza java.time o dodatkowe klasy. Ten projekt jest poligonem doświadczalnym dla ewentualnych przyszłych dodatków do java.time. Można znaleźć kilka przydatnych klas tutaj takie jak Interval
, YearWeek
, YearQuarter
, i więcej .
dd
jako formatu?