Для работы с датой и временем в языке 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 и рассмотрели пример с применением форматирования даты и времени.