Pakkerne java.time, java.util, java.sql og java.text indeholder klasser til at repræsentere dato og klokkeslæt. Følgende klasser er vigtige for at håndtere dato i Java.
Java 8 Dato/Time API
Java har introduceret en ny Date and Time API siden Java 8. Java.time-pakken indeholder Java 8 Date and Time klasser.
- java.time.LocalDate klasse
- java.time.LocalTime klasse
- java.time.LocalDateTime klasse
- java.time.MonthDay klasse
- java.time.OffsetTime klasse
- java.time.OffsetDateTime klasse
- java.time.Clock klasse
- java.time.ZonedDateTime klasse
- java.time.ZoneId klasse
- java.time.ZoneOffset klasse
- java.time.Årsklasse
- java.time.YearMonth klasse
- java.time.Period klasse
- java.time.Varighed klasse
- java.time.Instant klasse
- java.time.DayOfWeek enum
- java.time.Month enum
Klassisk dato/klokkeslæt API
Men klassisk eller gammel Java Date API er også nyttig. Lad os se listen over klassiske dato- og tidsklasser.
- java.util.Dato klasse
- java.sql.Dato klasse
- java.util.Calendar klasse
- java.util.GregorianCalendar klasse
- java.util.TimeZone klasse
- java.sql.Time klasse
- java.sql.Timestamp klasse
Formatering af dato og tid
Vi kan formatere dato og klokkeslæt i Java ved at bruge følgende klasser:
Java Date and Time API'er
Java leverer dato og klokkeslæt funktionalitet ved hjælp af to pakker java.time og java.util. Pakken java.time er introduceret i Java 8, og de nyligt introducerede klasser forsøger at overvinde manglerne i de gamle java.util.Date og java.util.Calendar klasser.
Klassiske Dato Tid API klasser
De primære klasser før udgivelsen af Java 8 var:
min max
Java.lang.System: Klassen giver metoden currentTimeMillis() der returnerer den aktuelle tid i millisekunder. Den viser den aktuelle dato og tid i millisekunder fra 1. januar 1970.
java.util.Dato: Det bruges til at vise et bestemt tidspunkt med en enhed på millisekund.
java.util.Calendar: Det er en abstrakt klasse, der giver metoder til at konvertere mellem instanser og manipulere kalenderfelterne på forskellige måder.
java.text.SimpleDateFormat: Det er en klasse, der bruges til at formatere og parse datoerne på en foruddefineret måde eller brugerdefineret mønster.
java.util.TimeZone: Det repræsenterer en tidszoneforskydning og regner også ud med sommertid.
Ulemper ved eksisterende Dato/Time API'er
Ny Date Time API i Java 8
Den nye date API hjælper med at overvinde de ovennævnte ulemper med de ældre klasser. Det inkluderer følgende klasser:
java.time.LocalDate: Det repræsenterer en år-måned-dag i ISO-kalenderen og er nyttig til at repræsentere en dato uden et tidspunkt. Det kan bruges til kun at repræsentere en dato information, såsom en fødselsdato eller bryllupsdato.
java.time.LocalTime: Det handler kun i tide. Det er nyttigt til at repræsentere menneskebaserede tidspunkter på dagen, såsom filmtider eller åbnings- og lukketider for det lokale bibliotek.
java.time.LocalDateTime: Den håndterer både dato og klokkeslæt uden en tidszone. Det er en kombination af LocalDate med LocalTime.
java.time.ZonedDateTime: Den kombinerer LocalDateTime-klassen med zoneinformationen givet i ZoneId-klassen. Det repræsenterer et komplet dato-tidsstempel sammen med tidszoneoplysninger.
java.time.OffsetTime: Den håndterer tid med en tilsvarende tidszoneforskydning fra Greenwich/UTC, uden tidszone-id.
java.time.OffsetDateTime: Den håndterer en dato og et klokkeslæt med en tilsvarende tidszoneforskydning fra Greenwich/UTC, uden et tidszone-id.
java.time.Clock: Det giver adgang til det aktuelle øjeblik, dato og klokkeslæt i en given tidszone. Selvom brugen af Ur-klassen er valgfri, giver denne funktion os mulighed for at teste din kode for andre tidszoner, eller ved at bruge et fast ur, hvor tiden ikke ændrer sig.
java.time.Instant : Det repræsenterer starten på et nanosekund på tidslinjen (siden EPOCH) og nyttigt til at generere et tidsstempel til at repræsentere maskintid. Et øjeblik, der opstår før epoken, har en negativ værdi, og et øjeblik, der opstår efter epoken, har en positiv værdi.
java.time.Varighed: Forskellen mellem to øjeblikke og målt i sekunder eller nanosekunder og bruger ikke dato-baserede konstruktioner såsom år, måneder og dage, selvom klassen giver metoder, der konverterer til dage, timer og minutter.
java.time.Periode : Det bruges til at definere forskellen mellem datoer i datobaserede værdier (år, måneder, dage).
java.time.ZoneId : Den angiver en tidszone-id og giver regler for konvertering mellem en Instant og en LocalDateTime.
java.time.ZoneOffset : Den beskriver en tidszone offset fra Greenwich/UTC tid.
java.time.format.DateTimeFormatter : Det kommer op med forskellige foruddefinerede formattere, eller vi kan definere vores eget. Den har parse() eller format() metode til at parse og formatere dato-tidsværdierne.