Программирование – это не только написание сложных кодовых структур. Рано или поздно каждый разработчик сталкивается с форматированием даты, а также времени. За реализацию подобных операций отвечают специализированные классы. Их довольно много, но на практике используются преимущественно два варианта.

При помощи соответствующих классов в Java можно вычислять текущее время. Дополнительно программеры смогут задействовать для форматирования отдельный class в Джаве. В данной статье будет рассказано об этих нюансах, а также об основах работы с календарем при создании приложений на Java.

Java – что это такое: особенности языка

Но перед этим стоит понять, нужно ли вообще разбираться в целых классах Джавы. Это не всегда простая задача, особенно для новичков.

Java – перспективный и современный язык программирования. Он предусматривает:

  • простой для понимания и интерпретации синтаксис;
  • многофункциональность;
  • разнообразные инструменты для быстрого коддинга и создания крупных проектов;
  • наличие ООП.

Писать на этом языке можно совершенно разные программы – и для работы, и для развлечений. Основное предназначение Java – работа с веб-утилитами. В них вопросы, связанные с датой и временем, иногда обостряются.

Отличительной особенностью Java является то, что это – универсальный кроссплатформенный язык. Перенести программу с одной платформы на другую не составит никакого труда. Данный вариант – отличный выбор как для новичка, так и для опытного программиста.

Внимание: большинство движков для создания игр поддерживают Джава-семейство.

Терминологический вопрос – что запомнить перед началом работы

Для того, чтобы работать с текстом, а также объектами в программном коде, разработчик должен понимать, с чем он имеет дело. В программировании есть термины, без осознания которых создать собственное приложение и понять, как оно работает, невозможно.

Чтобы не запутаться в понятиях, рекомендуется запомнить следующие понятия:

  • алгоритмы – свод правил и инструкций, предназначенных для решения определенных задач;
  • аргументы – значения, передаваемые в функции и команды;
  • переменные – элементарные «хранилища» информации;
  • объекты – сочетания связанных переменных, констант, а также иных сведений структурного характера, способные выбираться и обрабатываться совместно;
  • класс – набор связанных объектов с общими свойствами;
  • методы – список правил, определяющих возможности того или иного элемента кода;
  • цикл – неоднократное повторение одних и тех же манипуляций (части кодификации);
  • константа – неизменяемое в ходе выполнения утилиты значение;
  • массив – перечень/группы схожих типов информации, подлежащий группировке;
  • операнд – элемент, которым удается манипулировать через так называемые операторы;
  • оператор – объект в программном коде, позволяющий управлять операндами (пример – сложение или вычитание).

Непосредственно с датой и часами перечисленные термины ничего общего не имеют, но предложенная вниманию информация будет полезна в процессе создания собственных приложений. Как тех, кто работают с часами, так и примитивных утилит. Это – база, которая пригодится любому программисту перед началом работы.

Разбор календаря – с чем предстоит иметь дело

Каждый современный человек знает, что такое календарь. Можно использовать форматирование calendar в своих приложениях при программировании. Это – весьма полезные опции, которые довольно легко реализовать на практике.

Пользователю предстоит работать со следующими элементами:

  • какое сейчас/было число (день недели, конкретная дата (включая месяц));
  • часовой пояс;
  • время (час, минута, секунда).

Для того, чтобы понять, какие объекты будут корректироваться и определяться, достаточно посмотреть на «часы» в операционной системе. Там отображается текущая дата, а также конкретное время.

Внимание: на компьютере соответствующая «часовая» информация – это определенное количество миллисекунд. При программировании подобные данные будут храниться в отдельном классе/файле.

Классы в Java для работы с часами

Для того, чтобы работать с форматом даты в Java, предстоит изучить несколько отдельных классов. Джава предусматривает их для того, чтобы использовать в приложениях и играх calendar.

На данный момент известны следующие варианты классов:

  • Date;
  • Calendar;
  • TimeZone.

Первый два – самостоятельные составляющие, которые относятся к библиотеке java.utill. Последний обособлено не задействуется.

Класс Date

С января 1970 года хранит часы в миллисекундах. Класс обладает собственным конструктором по умолчанию. Он отвечает за конкретную операцию – возвращает текущее время.

Разработчики могут заняться созданием объекта Date при помощи конструктора, принимающего количество миллисекунд, начиная с 1970 года. Для того, чтобы уточнить внутреннее время, принято использовать методы класса Date под «названиями» setTime и getTime.

При применении класса Date осуществляется инициализация объекта. Дата и часы будут зависеть от задействованного конструктора. Всего их несколько:

  • Date() — отвечает за часы и дату объекта на данный момент, «здесь и сейчас»;
  • Date(long millisec) – принятие аргумента, равного количеству миллисекунд, прошедших с начала 1.01.1970 года.

В основном на практике встречается первый вариант. Чуть позже будет приведен наглядный пример того, как использовать дату и часы с соответствующим «элементом» программного кода.

О методах

Date имеет множество разнообразных методов. Они отвечают за те или иные манипуляции. Ориентироваться можно на следующую информацию:

  1. Int compareTo(дата дата) – производит сравнение дат. Если они совпадают, значение возвращается к 0, отрицательным оно будет, если вызывающая дата более ранняя. В противном случае – значение положительное.
  2. Boolean equals(object object) – при совпадении дат происходит возврат true.
  3. Long GetTime() – указывает, сколько миллисекунд на момент отправки запроса прошло с 1 января 1970 года.
  4. Void setTime(long milliseconds) – установка часов и даты в количестве миллисекунд, которые прошли с 1970-го.
  5. Boolean after(date date) – когда объект содержит более позднюю дату, нежели прописано в параметре date, возвращается значение «истина».
  6. Boolean before – аналогично предыдущему варианту, но true выходит, если объект включает в себя более ранее «значение».

Все это помогает взаимодействовать с часами, а также с тем, какое сегодня/было когда-то число.

Вот пример вывода даты в консоль:

Все о работе с календарными элементами в Java

И наглядный образец применения GetTime():

Все о работе с календарными элементами в Java

У рассматриваемого class есть подкласс, который тоже весьма активно применяется на практике. Он пригодится при непосредственном форматировании.

Подкласс SimpleDateFormat

SimpleDateFormat – это отдельный и удобный класс, который является своеобразным подклассом DateFormat. Позволяет отображать месяц, число и часы в том формате, который кажется пользователю наиболее удобным.

Чтобы лучше понимать принцип его работы, стоит рассмотреть наглядный пример кода:

package ru.test;

import java.util.Date;
import java.text.SimpleDateFormat;

public class Test
{
    public void test()
    {
        Date d = new Date();
        SimpleDateFormat format1;
        SimpleDateFormat format2;
        format1 = new SimpleDateFormat(
                        "dd.MM.yyyy hh:mm");
        format2 = new SimpleDateFormat(
                  "День dd Месяц MM Год yyyy Время hh:mm");
        System.out.println(
             format1.format(d)  // 25.02.2013 09:03
        );
        System.out.println(
             format2.format(d)
             // День 25 Месяц 02 Год 2013 Время 09:03
        );
    }
}

Для того, чтобы создать такой шаблон, пришлось использовать подобные параметры:

  • dd – day;
  • MM – название месяца;
  • yyyy – год;
  • hh – часы;
  • mm – минуты.

Под видом разделителя можно применять современно разный текст. Тот, что разработчику приходится по вкусу больше всего.

Символика форматирования строк

SimpleDateFormat – это подкласс DateFormat, который дает возможность определять собственные шаблоны для вывода на экран даты и времени. Для реализации поставленной задачи принято использовать определенные символьные записи.

К ним относят:

  • A – AM или PM (актуально для часов в 12-часовом «формате»);
  • d – день месяца;
  • D – день года;
  • H – часы, которые работают в формате день/ночь;
  • K – «суточные» часы;
  • S – секунды;
  • M – минуты;
  • W – week of year;
  • y – год;
  • z – часовой пояс.

То, сколько раз повторяется конкретный символ, указывает на способ представления календарной информации. Так можно использовать записи yyyy-mm-dd и hh:mm:ss или yy-mm-dd и h:m:s. В первом случае будет запись типа 1994-01-15 и 20:45:15. Во втором, если требуется, перед соответствующей цифрой будет выводиться дополнительный 0.

Класс Calendar

Для того, чтобы работать с календарной информацией, разработчику предоставляют разнообразные методы. Есть абстрактный класс Calendar, которые умеет работать в пределах календаря с датами. Он может прибавлять дни, а также принимать во внимание високосные года. Дополнительно преобразовывает время (миллисекунды) в более удобном пользователю формате.

Реализация Calendar производится классом GregorianCalendar. Как и у Data конструктор будет возвращать календарь на текущий день. Но здесь допустимо задавать его явным образом. Достаточно прописать все параметры оного:

Все о работе с календарными элементами в Java

Здесь:

  • areFieldsSet – указатель на то, были ли заданы компоненты времени;
  • fields – массив целочисленных значений временных элементов;
  • isSet – массив вида Boolean, который указывает на наличие специфического компонента «часов»;
  • time (типа long) – текущее время элемента;
  • isTimeSet – указатель на установку текущих «часов».

Данный вариант является весьма мощным, особенно если нужно вывести на экран полное название месяца или недели.

Методы

Для того, чтобы задействовать Calendar, необходимо запомнить следующие методы:

Все о работе с календарными элементами в Java

Формат даты можно менять при помощи соответствующего класса и различных типов данных. К ним относят следующие варианты:

  • day_of_week – день недели;
  • day_of_year – день года;
  • day_of_month – месяц (день);
  • week_of_month – неделя месяца;
  • week_of_year – годовая неделя;
  • Year – год;
  • Calendar.ERA – эра.

С Day_of_week предстоит взаимодействовать, если хочется на календаре или в приложении вывести название конкретного дня недели.

Все о работе с календарными элементами в Java

Это – наглядный пример того, как можно использовать перечисленные типы информации на практике.

О классе GregorianCalendar

Используя текущую дату в Java, можно столкнуться с подклассом Calendar, который носит название GregorianCalendar. Он представляет Григорианский календарь. При помощи метода getInstance() происходит возврат объекта GregorianCalendar, инициированный нынешней датой и часами согласно региональным параметрам.

Класс имеет поля AD и BC. Первый вариант – до нашей эры, второй – наша эра. И дополнительно здесь предусматривается метод isLeapYear(). Отвечает за проверку високосности года. Выглядит так:

Все о работе с календарными элементами в Java

При применении подобной «операции», происходит проверка. Когда год является високосным, программа возвращает значение true.

Промежутки времени, которые нужны программисту, могут быть получены через метод get(). Вот пример того, каким образом удается уточнить месяц, содержащийся в заданной дате:

Все о работе с календарными элементами в Java

Корректировку объекта производят через set(). Данный пример помогает разобраться в принципах установки новой даты:

Все о работе с календарными элементами в Java

Сдвиг даты на тот или иной период производится через add():

Все о работе с календарными элементами в Java

А вот пример преобразований:

Все о работе с календарными элементами в Java

Здесь весьма полезными будут методы setTime() и getTime().

Класс TimeZone

TimeZone не позволяет «просто так» корректировать часы. Этот class используется только совместно с Calendar или DateFormat. Обладает следующими особенностями:

  • относится к абстрактным – от него нельзя порождать объекты;
  • для «порождения» применяется метод getDefault() – он возвращает экземпляр наследника с параметрами, скопированными из ОС;
  • обладает статистическим методом getTimeZone, который отвечает за указание имени конкретного временного пояса;
  • поля, отвечающие за параметризацию getTimeZone нигде не прописаны;
  • присутствует статистический метод getAvailableIds(), который возвращает перечень возможных значений наименований временных зон типа string[];
  • набор для параметризации может быть определен относительно Гринвича: string[] getAvailableIds(int offset).

Далее будет приведен образец программного кода, который последовательно поможет вывести на экран не часы, а временную зону по умолчанию, все варианты оного, а также те «территории», которые совпадают со временем «по Москве».

Выглядит этот код так:

import java.util.Arrays;
import java.util.TimeZone;

public class TimeZoneList
Все о работе с календарными элементами в Java
   public static void main(String[] args) {
        new TimeZoneList();
        System.exit(0);
    }
}

Данная кодификация работает так:

  • Align – выравнивает отображение информации от «часов», заданных по Гринвичу;
  • drawTimeZoneParam – параметры ТаймЗон;
  • в конструкторе TimeZoneList определяется нынешняя TimeZone, далее осуществляется вывод всех вариантов, которые могут быть.

А еще метод getAvailableIDs позволит получить перечень TimeZone, у которых имеет место смещение по времени, совпадающее с текущей «территорией».

Всемирное координирование

В процессе программирования иногда недостаточно задействовать dates, days, time. Часто приходится пользоваться временным сдвигом, который относится к нестандартной деятельности человека. Пример – расписание поездов по России.

Для этого используется TimeZone UTC. UTC – это всемирное координирование времени. Заменяет Гринвич. В Джаве можно работать с Date для координации часов, но это – лишние манипуляции. При программировании они не нужны.

Ниже представлен наглядный пример применения TimeZone UTC. Здесь часы будут привязаны к одной из сторон (серверной), на компьютере устанавливаются различные «зональности». Для того, чтобы установить конкретный вариант, потребуется:

  • обратиться к панели управления;
  • открыть раздел «Data and Time»;
  • выбрать TimeZone, которую хочется.

Код имеет следующую форму записи:

Все о работе с календарными элементами в Java
Все о работе с календарными элементами в Java

Применяются три TimeZone (current Zone). В двух вариантах (Москва и UTC) выводится в консоль:

  • объект Data в состоянии «not formatted»;
  • он же, но с форматирование и DateFormat/SimpleDateFormat.

Для того чтобы программа функционировала в конкретной временной зоне, требуется через SetDefault установить подходящий вариант в процессе обработки «времени».

В помощь программисту

Java позволяет работать с calendar day_of_week и другими параметрами календарного характера всем программистам. Чтобы облегчить понимание принципов взаимодействия, а также используемые formats и классы, стоит углубленно изучить Джаву.

Сделать это помогают специализированные курсы. Возможно очное и дистанционное обучение. Курсы рассчитаны на срок до года. По завершению выдаются сертификаты установленного образца. Во время занятий программерам объяснят, что такое формат даты, научат основам написания кодов на Джаве. Есть предложения не только для новичков, но и для тех, кто хочет улучшить свои навыки в Java. В процессе обучения можно общаться не только с коллегами, но и с опытными преподавателями.

Все о работе с календарными элементами в Java