Руководство по классу java.util.Date

Научитесь создавать новую дату, получать текущую дату, анализировать дату в строку или форматировать объект Date с помощью класса java.util.Date. Эти варианты использования часто требуются, и наличие их в одном месте поможет сэкономить время многим из нас.

Стоит отметить, что с экземпляром Date не связана информация о часовом поясе. Экземпляр Date представляет время, прошедшее с Epach в миллисекундах. Если мы печатаем экземпляр date, он всегда печатает часовой пояс по умолчанию или локальный часовой пояс машины. Поэтому информация о часовом поясе, печатаемая в методе Date.toString(), не должна вводить вас в заблуждение.

1. Форматирование даты в строку

Программа Java форматирования даты в строку с помощью SimpleDateFormat.format(). Обратите внимание, что SimpleDateFormat не является потокобезопасным классом, поэтому мы не должны совместно использовать его экземпляр с несколькими потоками.

SimpleDateFormat sdf = new SimpleDateFormat("dd/M/yyyy");String date = sdf.format(new Date());

Подробные шаблоны даты и времени см. в SimpleDateFormat JavaDoc. Ниже приведен список наиболее распространенных шаблонов букв, которые вы можете использовать.

y = year (yy or yyyy)M = month (MM)d = day in month(dd)h = hour(0-12) (hh)H = hour(0-23) (HH)m = minute in hour(mm)s = seconds(ss)S = milliseconds(SSS)z = time zone text (e.g. Pacific Standard Time...)Z = time zone, time offset(e.g. -0800)
Шаблон Пример
гггг-ММ-дд( ISO ) «2018-07-14»
дд-МММ-гггг «14-июл-2018»
дд/ММ/гггг «14/07/2018»
Е, МММ дд гггг «Сб, 14 июля 2018»
ч:мм а «12:08 PM»
EEEE, MMM дд, гггг ЧЧ:мм:сс а «Суббота, 14 июля 2018 г., 14:31:06»
гггг-ММ-дд'Т'ЧЧ:мм:ссZ «2018-07-14T14:31:30+0530»
чч 'o''clock' a, zzzz «12 часов дня по тихоокеанскому летнему времени»
К:мм а, я «00:08 PM, PDT»

2. Анализ строки на сегодняшний день

Программа Java для анализа строки в экземпляр Date с использованием метода SimpleDateFormat.parse().

SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy hh:mm:ss");String dateInString = "15-10-2015 10:20:56";Date date = sdf.parse(dateInString);

3. Получение текущей даты и времени

Класс java.util.Date представляет дату и время, прошедшие с начала эпохи. Ниже приведены программы Java для получения текущей даты и времени и печати в заданном формате.

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");Date date = new Date();System.out.println(dateFormat.format(date)); 

Для справки: начиная с Java 8 мы можем использовать классы LocalDate, LocalTime и LocalDateTime.

LocalDate today = LocalDate.now();System.out.println("Today's Local date : " + today);LocalTime time = LocalTime.now();System.out.println("local time now : " + time);

4. Преобразование между датой и календарем

4.1 Преобразование календаря в дату

Calendar calendar = Calendar.getInstance();Date date = calendar.getTime();

4.2 Преобразование даты в календарь

SimpleDateFormat sdf = new SimpleDateFormat("dd-M-yyyy hh:mm:ss");String dateInString = "27-04-2016 10:22:56";Date date = sdf.parse(dateInString);Calendar calendar = Calendar.getInstance();calendar.setTime(date);

5. Сравнение двух дат

Мы можем сравнить два экземпляра даты, используя его метод compareTo(). Он возвращает целочисленное значение, представляющее, что данная дата находится до или после другой даты.

Сравнение date1.CompareTo(date2) вернет:

  • значение 0, если date2 равна date1;
  • значение меньше 0, если date1 предшествует date2;
  • значение больше 0, если дата1 после даты2.
Date date1 = new Date();Date date2 = new Date();int comparison = date1.compareTo(date2);

6. Извлечение дней, месяцев и лет

Программа на Java для получения частей даты, таких как год, месяц и т. д. по отдельности.

Методы получения года, месяца, дня месяца, часа и т. д. устарели. Если вам нужно получить или установить год, месяц, день месяца и т. д., используйте вместо этого java.util.Calendar.

Calendar calendar = Calendar.getInstance();calendar.setTime(new Date());int year = calendar.get(Calendar.YEAR);int month = calendar.get(Calendar.MONTH);int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH); // Jan = 0, not 1int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);int weekOfMonth= calendar.get(Calendar.WEEK_OF_MONTH);int hour = calendar.get(Calendar.HOUR); // 12 hour clockint hourOfDay = calendar.get(Calendar.HOUR_OF_DAY); // 24 hour clockint minute = calendar.get(Calendar.MINUTE);int second = calendar.get(Calendar.SECOND);int millisecond= calendar.get(Calendar.MILLISECOND);
Прокрутить вверх