Руководство по Java Core. Дата и время.

Для работы с датой и временем в языке Java предусмотрен класс java.util.Date.

Этот класс поддерживает 2 конструктора:


Date()

Этот конструктор создаёт экземпляр класса с текущей датой и временем.


Date (long millisec)

В качестве аргумента этого конструктора выступает количество миллисекунд, которое прошлое с 1 Января 1970 года.

Класс Date реализовывает 10 методов:

  • boolean after(Date date)
    Возвращает true, если дата, вызывающего его объекта является более ранней, чем дата указанная в качестве аргумента. В противном случае возвращает false.
  • boolean before(Date date)
    Возвращает true, если дата, вызывающего его объекта является более поздней, чем дата указанная в качестве аргумента. В противном случае возвращает false.
  • long getTime()
    Этот метод возвращает количество миллисекунд, которое прошло с 1 Января 1970 года.
  • void setTime(long time)
    Устанавливает дату и время. Представляет собой время в миллисекундах, которое прошло с 1 Января 1970 года.
  • Object clone()
    Клонирует объект, вызывающий метод.
  • int compareTo(Date date)Сравнивает 2 даты. Возвращает 0, если даты равны. Положительное значение, если вызывающий объект содержит более позднюю дату. Отрицательное – если вызывающий его объект содержит более раннюю дату.
  • int compareTo(Object obj)Работает аналогично предыдущему классу, но результатом его работы является ClassCastException.
  • boolean equals(Object obj)
    Возвращает true, если вызывающий объект содержит такую же дату и время, как и объект, переданный в аргументе.
  • int hashCode()
    Возвращает хэш-код объекта.
  • String toString()
    Преобразует объект в класс String и возвращает эту строку.

Для понимания того, как это работает на практике рассмотрим пример простого приложения.

Пример:


import java.util.Date;

public class DateAndTimeDemo {
    public static void main(String[] args) {
        /*Creating Date object with Current Date and Time*/
        Date currentDate = new Date();


        System.out.println("Current date and time: " + currentDate.toString());
        System.out.println("Using getTime() \'method\': " + currentDate.getTime());

        Date someDate = new Date();
        System.out.println("Some date: " + someDate.toString());
        System.out.println("Compare dates: ");
        System.out.println("Current date and some date are equal: " + currentDate.equals(someDate));

    }
}

В результате работы программы мы получим, примерно, следующий результат:


/*Some system messages*/
Current date and time: Mon Feb 29 10:34:27 EET 2016
Using getTime() 'method': 1456734867887
Some date: Mon Feb 29 10:34:27 EET 2016
Compare dates: 
Current date and some date are equal: false

Мы также имеем возможность определять формат вывода времени и даты используя класс SimpleDateFormat.

Рассмотрим пример простого приложения.

Пример:


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

public class DateFormatDemo {
    public static void main(String[] args) {
        Date currentDate = new Date();

        SimpleDateFormat dateFormat =
                new SimpleDateFormat("'Date: 'E dd.MM.yyyy'\nTime: ' hh:mm:ss a zzz");
        System.out.println("Current date: " + currentDate.toString());
        System.out.println("Formatted current date:\n" + dateFormat.format(currentDate));
    }
}

В результате работы программы мы получим, примерно, следующий результат:


/*Some system messages*/
Current date: Mon Feb 29 10:31:16 EET 2016
Formatted current date:
Date: Mon 29.02.2016
Time:  10:31:16 AM EET

С другими возможностями форматирования, можно ознакомиться в спецификации.

Крайне полезным может быть преобразование строк (String) в Date.

Как это делается на практике, рассмотрим на примере простого приложения.

Пример:


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

public class StringToDateDemo {
    public static void main(String[] args) throws ParseException {
        String string = args.length == 0?"1-03-2016": args[0];
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-yyyy");
        Date date;

        date = dateFormat.parse(string);
        System.out.println("We transform string: " + string + " to: ");
        System.out.println(date);
    }
}

В результате работы программы мы получим, примерно, следующий результат:


/*Some system messages*/
We transform string: 1-03-2016 to: 
Tue Mar 01 00:00:00 EET 2016
Simple date output: Tue Mar 01 00:00:00 EET 2016

В этом уроке мы изучили основы работы с классом java.util.Date и рассмотрели пример с применением форматирования даты и времени.