Обзор Java Date и Time API



JSR 310 Date и Time API был разработан для преодоления многочисленных проблем, связанных с предыдущими Date и Time API, Java. В результате проект был построен с учетом ряда важных принципов дизайна:

  • Неизменность и потокобезопасность. Все основные классы в Date и Time API являются незыблемыми; это гарантирует, что вам не придется беспокоиться о многопоточности, то есть о проблемах, вызываемых отсутствием синхронизации потоков. Неизменные объекты просто строить, использовать; с помощью них можно создавать хороших хэш-ключи и так далее.

  • Беглость. Date и Time API представляет собой интерфейс, который делает методы более читаемым и легче учится, особенно, когда методы соединены друг с другом. Некоторые заводские методы (например, в now() , from() , а также of -prefixed методов) используются в качестве альтернативы конструкторами. Вы также сможете использовать with -prefixed методы, если вам нужно возвратить копию текущего экземпляра с дополнительной информацией.

  • Ясность. Каждый метод Date и Time API определен корректно; ясно, что он выполняет. Кроме того, Date и Time не принимает нулевые аргументы в самом начале. Если не указано иное, то передавая пустой аргумент к методу в любом классе или интерфейсе, будет вызываться NullPointerException. Являются исключением vетоды валидации, которые принимают аргументы и возвращают объект, логические значения: они обычно возвращают false, когда передается NULL.

  • Расширяемость. Шаблон проектирования стратегии используется по всему API , чтобы обеспечить расширение, избегая путаницы. Например, хотя классы Date и Time основаны на ISO-8601 системе календаря, вы можете также работать с календарями не ISO (например, японский Imperial), которые включены в API. Можно даже представить свой собственный календарь.
На момент написания этой статьи в Date и Time описывается более 60 типов, которые организованы в основной пакет и четыре подпакета:

  • В java.time представлены классы, представляющие основные понятия даты и времени: моменты, продолжительность, даты, время, часовые пояса, partial-ы и периоды. Все классы данного пакета являются статичными и ориентированными на многопоточное исполнение.

  • java.time.chrono обеспечивает общий API, который описывает календарные систем, отличных от дефолтной календарной системы ISO-8601.

  • java.time.format представляет классы для форматирования и разбора объектов даты и времени.

  • java.time.temporal предлагает поля, блок или доступ к настройке временного объекта, например по дате.

  • В java.time.zone представлены классы, в которых реализована поддержка часовых поясов и их правил.
Типы в пакете java.time должны удовлетворять большинство ваших потребностей. Вы будете работать непосредственно с типами в остальных четырех пакетах только тогда, когда вам нужно выйти за пределы java.time в ISO-8601 - системы календаря по умолчанию.

Модернизация старого Date и Time API

Для того, чтобы облегчить переход к новой API, старый Date и Time API, был модернизирован для взаимодействия с датой и временем. Например, метод Instant toInstant() был добавлен в java.util.Date для конвертирования экземпляра Date в Instant экземпляр.

Продолжение следует...
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, java, Date, Time




Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Рецензия на книгу Андрея Кивинова "Пурга"
Разбор ошибок валидации сайта
Округление десятичных значений в C#