Pakkene java.time, java.util, java.sql og java.text inneholder klasser for å representere dato og klokkeslett. Følgende klasser er viktige for å håndtere dato i Java.
Java 8 Dato/Time API
Java har introdusert en ny Date and Time API siden Java 8. Java.time-pakken inneholder Java 8 Date and Time-klasser.
- java.time.LocalDate-klassen
- java.time.LocalTime-klassen
- java.time.LocalDateTime-klassen
- java.time.MonthDay klasse
- java.time.OffsetTime-klassen
- java.time.OffsetDateTime-klassen
- java.time.Clock klasse
- java.time.ZonedDateTime-klassen
- java.time.ZoneId klasse
- java.time.ZoneOffset-klassen
- java.time.Årsklasse
- java.time.YearMonth klasse
- java.time.Period klasse
- java.time.Varighet klasse
- java.time.Instant klasse
- java.time.DayOfWeek enum
- java.time.Month enum
Klassisk dato/klokkeslett API
Men klassisk eller gammel Java Date API er også nyttig. La oss se listen over klassiske dato- og klokkeslettklasser.
- java.util.Dato klasse
- java.sql.Dato klasse
- java.util.Calendar klasse
- java.util.GregorianCalendar-klassen
- java.util.TimeZone-klassen
- java.sql.Time-klassen
- java.sql.Timestamp-klassen
Formatering av dato og klokkeslett
Vi kan formatere dato og klokkeslett i Java ved å bruke følgende klasser:
Java dato og klokkeslett APIer
Java gir dato- og klokkeslettfunksjonaliteten ved hjelp av to pakker java.time og java.util. Pakken java.time er introdusert i Java 8, og de nylig introduserte klassene prøver å overvinne manglene til de eldre klassene java.util.Date og java.util.Calendar.
Klassisk dato og klokkeslett API-klasser
De primære klassene før Java 8-utgivelsen var:
min maks
Java.lang.System: Klassen gir currentTimeMillis()-metoden som returnerer gjeldende tid i millisekunder. Den viser gjeldende dato og klokkeslett i millisekunder fra 1. januar 1970.
java.util.Date: Den brukes til å vise spesifikke øyeblikk av tid, med enheten millisekund.
java.util.Calendar: Det er en abstrakt klasse som gir metoder for å konvertere mellom instanser og manipulere kalenderfeltene på forskjellige måter.
java.text.SimpleDateFormat: Det er en klasse som brukes til å formatere og analysere datoene på en forhåndsdefinert måte eller brukerdefinert mønster.
java.util.TimeZone: Den representerer en tidssoneforskyvning, og regner også ut sommertid.
Ulemper med eksisterende Dato/Time API-er
Ny Date Time API i Java 8
Den nye dato-API-en hjelper til med å overvinne ulempene nevnt ovenfor med de eldre klassene. Det inkluderer følgende klasser:
java.time.LocalDate: Den representerer en år-måned-dag i ISO-kalenderen og er nyttig for å representere en dato uten tid. Den kan brukes til å representere kun en datoinformasjon, for eksempel fødselsdato eller bryllupsdato.
java.time.LocalTime: Det handler kun i tid. Det er nyttig for å representere menneskebasert tid på dagen, for eksempel filmtider, eller åpnings- og stengetidene til det lokale biblioteket.
java.time.LocalDateTime: Den håndterer både dato og klokkeslett, uten tidssone. Det er en kombinasjon av LocalDate med LocalTime.
java.time.ZonedDateTime: Den kombinerer LocalDateTime-klassen med soneinformasjonen gitt i ZoneId-klassen. Det representerer et fullstendig datotidsstempel sammen med tidssoneinformasjon.
java.time.OffsetTime: Den håndterer tid med en tilsvarende tidssoneforskyvning fra Greenwich/UTC, uten tidssone-ID.
java.time.OffsetDateTime: Den håndterer en dato og tid med en tilsvarende tidssoneforskyvning fra Greenwich/UTC, uten tidssone-ID.
java.time.Clock : Den gir tilgang til gjeldende øyeblikk, dato og klokkeslett i en gitt tidssone. Selv om bruken av klokkeklassen er valgfri, lar denne funksjonen oss teste koden din for andre tidssoner, eller ved å bruke en fast klokke, der tiden ikke endres.
java.time.Instant : Det representerer starten på et nanosekund på tidslinjen (siden EPOCH) og nyttig for å generere et tidsstempel for å representere maskintid. Et øyeblikk som inntreffer før epoken har en negativ verdi, og et øyeblikk som inntreffer etter epoken har en positiv verdi.
java.time.Varighet : Forskjellen mellom to øyeblikk og målt i sekunder eller nanosekunder og bruker ikke datobaserte konstruksjoner som år, måneder og dager, selv om klassen gir metoder som konverterer til dager, timer og minutter.
java.time.Period : Den brukes til å definere forskjellen mellom datoer i datobaserte verdier (år, måneder, dager).
java.time.ZoneId : Den angir en tidssone-identifikator og gir regler for konvertering mellom en Instant og en LocalDateTime.
java.time.ZoneOffset : Den beskriver en tidssoneforskyvning fra Greenwich/UTC-tid.
java.time.format.DateTimeFormatter : Den kommer opp med forskjellige forhåndsdefinerte formatere, eller vi kan definere vår egen. Den har metoden parse() eller format() for å analysere og formatere dato- og klokkeslettverdiene.