На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Работа с Java Date и Time API: введение


Платформа Java меняется постоянно со времени своего первого выпуска. До Java SE 8 самым значительным изменениям язык подвергся в сентябре 2004 года - JDK 5. С тех пор прошло много лет и теперь релиз Java 8 является самым существенным. Все релизы Java привносят дополнения в язык, а также API – интерфейсы, учитывающие эмерджентные потребности программирования Java. В этой серии статей мы рассмотрим Date и Time API и поясним, почему это такое важное дополнение к Java SE.

Введение в Java Date и Time API

Date и Time - новые дата, время, календарь и API для платформы Java SE. Они были разработан в соответствии с JSR 310 и заменяют существующую дату и время в Java - инфраструктуру на базе java.util.Date и java.util.Calendar . Сейчас вам лучше использовать этот API в любом приложении. Не стоит применять устаревшие Date, Calendar и java.util.TimeZone классы; Calendar или TimeZone подклассы, такие как java.util.GregorianCalendar; или связанные с ними классы, такие как java.text.DateFormat.

Date и Time API проводит различие между машиной и человеком с помощью вида на временной шкале, которая представляет собой всегда возрастающую последовательность моментов времени или точек вдоль временной шкалы. Машинный вид времени – это последовательность целочисленных значений по отношению к эпохе (например, в полночь, 1 января 1970 г.), с положительными значениями определения моментов времени после эпохи, так и отрицательные значения определения моментов времени до эпохи. Человеческий вид - это набор полей (например, год, месяц, день-месяц, час, минута, секунда).

Зачем нам нужны новые Date и Time API?

В Java 1.0 был введен метод System.currentTimeMillis() , который могли бы вернуть машинный вид шкалы времени с точностью до миллисекунды. Также тогда был представлен класс java.util.Date, который возвращал времени «человеческий» вид. Вскоре стало очевидно, что существует несколько изъянов у этого класса:

  • Конструкторы, которые принимают в качестве аргумента год, требуют смещения от 1900 года – а это источник источником ошибок.
  • Январь представлен 0 вместо 1, что тоже источник ошибок.
  • Date не является описанием дату, а комбинацией даты и времени.
  • Возможность менять Date делает его небезопасным для использования в многопоточных сценариях без внешней синхронизации.
  • Date не поддается интернационализации.
В попытке исправить эти недостатки, Sun представила java.util.Calendar и связанные с ним классы с версии 1.1 Java. К сожалению, Calendar также имел недостатки, в том числе следующие:

  • Невозможность форматирования календаря.
  • Январь представлен 0 вместо 1 - источник ошибок.
  • Calendar не был типобезопасным; например, вы должны передавать int константу к get (int field) методом. Справедливости ради, перечисления еще не были доступны, когда был выпущен Calendar.
  • Изменчивость Calendar делает его небезопасным для использования в многопоточных сценариях без внешней синхронизации. «Компаньоны» классы java.util.TimeZone и java.text.DateFormat также имеют эту проблему.
  • Calendar сохраняет свое состояние внутренне двумя различными способами - как число миллисекунд, смещенных от эпохи, и как набор полей - в результате получается немало ошибок и проблем с производительностью.
Кроме того, java.sql 's Date , Time и Timestamp классы, расширяющие java.util.Date и наследующие свои проблемы. Также, для предотвращения установки времени участия в классе Date и часть даты в Time класс, Date и Time некоторые различные инкубационные методы выбрасывают исключение IllegalArgumentException.

Очевидно, что необходим был более надежный API для обеспечения функциональности даты и времени в программах Java.

Продолжение: Обзор Java Date и Time API



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



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





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




МТС, XP и служба DHCP клиент
Занимательная постапокалиптическая сказка


© upread.ru 2013-2020
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.