Пакетите java.time, java.util, java.sql и java.text съдържат класове за представяне на дата и час. Следните класове са важни за работа с дата в Java.
Java 8 API за дата/час
Java въведе нов API за дата и час след Java 8. Пакетът java.time съдържа класове за дата и час на Java 8.
- клас java.time.LocalDate
- клас java.time.LocalTime
- клас java.time.LocalDateTime
- клас java.time.MonthDay
- java.time.OffsetTime клас
- клас java.time.OffsetDateTime
- java.time.Clock клас
- java.time.ZonedDateTime клас
- клас java.time.ZoneId
- клас java.time.ZoneOffset
- java.time.Годишен клас
- клас java.time.YearMonth
- java.time.Period клас
- java.time.Клас на продължителност
- java.time.Instant клас
- java.time.DayOfWeek enum
- java.time.Month enum
Класически API за дата/час
Но класическият или стар Java Date API също е полезен. Нека да видим списъка с класически класове за дата и час.
- java.util.Date клас
- java.sql.Date клас
- java.util.Calendar клас
- java.util.GregorianCalendar клас
- java.util.TimeZone клас
- java.sql.Времеви клас
- клас java.sql.Timestamp
Форматиране на дата и час
Можем да форматираме дата и час в Java, като използваме следните класове:
Java API за дата и час
Java предоставя функционалност за дата и час с помощта на два пакета java.time и java.util. Пакетът java.time е въведен в Java 8 и нововъведените класове се опитват да преодолеят недостатъците на наследените класове java.util.Date и java.util.Calendar.
Класически API класове за дата и час
Основните класове преди пускането на Java 8 бяха:
java е празна
Java.lang.System: Класът предоставя метода currentTimeMillis(), който връща текущото време в милисекунди. Показва текущата дата и час в милисекунди от 1 януари 1970 г.
java.util.Дата: Използва се за показване на конкретен момент от време с единица милисекунда.
java.util.Calendar: Това е абстрактен клас, който предоставя методи за конвертиране между екземпляри и манипулиране на полетата на календара по различни начини.
java.text.SimpleDateFormat: Това е клас, който се използва за форматиране и анализиране на датите по предварително определен начин или дефиниран от потребителя модел.
java.util.TimeZone: Той представлява отместване на часовата зона и също така изчислява лятното часово време.
Недостатъци на съществуващите API за дата/час
Нов API за дата и час в Java 8
Новият API за дата помага да се преодолеят недостатъците, споменати по-горе, с наследените класове. Той включва следните класове:
java.time.LocalDate: Той представлява година-месец-ден в календара ISO и е полезен за представяне на дата без час. Може да се използва за представяне на информация само за дата, като дата на раждане или дата на сватба.
java.time.LocalTime: Справя се само във времето. Полезно е за представяне на часове от деня, базирани на хора, като часове на филми или часове на отваряне и затваряне на местната библиотека.
java.time.LocalDateTime: Той обработва както дата, така и час, без часова зона. Това е комбинация от LocalDate с LocalTime.
java.time.ZonedDateTime: Той комбинира класа LocalDateTime с информацията за зоната, дадена в класа ZoneId. Той представлява пълен печат за дата и час заедно с информация за часовата зона.
java.time.OffsetTime: Той обработва времето със съответното отместване на часовата зона спрямо Гринуич/UTC, без идентификатор на часовата зона.
java.time.OffsetDateTime: Той обработва дата и час със съответното отместване на часовата зона спрямо Гринуич/UTC, без идентификатор на часовата зона.
java.time.Clock: Той осигурява достъп до текущия момент, дата и час във всяка дадена часова зона. Въпреки че използването на клас Clock не е задължително, тази функция ни позволява да тестваме вашия код за други часови зони или като използваме фиксиран часовник, където времето не се променя.
java.time.Instant: Той представлява началото на наносекунда на времевата линия (от EPOCH) и е полезен за генериране на клеймо за време за представяне на машинното време. Момент, който настъпва преди епохата, има отрицателна стойност, а момент, който настъпва след епохата, има положителна стойност.
java.time.Продължителност: Разлика между два момента и измерена в секунди или наносекунди и не използва базирани на дата конструкции като години, месеци и дни, въпреки че класът предоставя методи, които преобразуват в дни, часове и минути.
java.time.Period: Използва се за определяне на разликата между датите в стойности, базирани на дата (години, месеци, дни).
java.time.ZoneId: Той посочва идентификатор на часова зона и предоставя правила за конвертиране между Instant и LocalDateTime.
java.time.ZoneOffset: Той описва отместване на часовата зона спрямо Гринуич/UTC време.
java.time.format.DateTimeFormatter: Предлага различни предварително дефинирани програми за форматиране или ние можем да дефинираме свой собствен. Има метод parse() или format() за анализиране и форматиране на стойностите за дата и час.