Java — Дата и время

Java предоставляет класс Date, доступный в пакете java.util , этот класс инкапсулирует текущую дату и время.

Класс Date поддерживает два конструктора, как показано в следующей таблице.

Sr.No.Конструктор и описание
1

Свидание( )

Этот конструктор инициализирует объект текущими датой и временем.

2

Дата (длинная миллисекунда)

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

Ниже приведены методы класса даты.

Sr.No.Метод и описание
1

логическое значение после (Дата, дата)

Возвращает true, если вызывающий объект Date содержит дату, более позднюю, чем та, которая указана date, в противном случае возвращает false.

2

логическое до (Дата, дата)

Возвращает true, если вызывающий объект Date содержит дату, более раннюю, чем указанная date, в противном случае возвращает false.

3

Клон объекта ()

Дублирует вызывающий объект Date.

4

int compareTo (Дата, дата)

Сравнивает значение вызывающего объекта со значением date. Возвращает 0, если значения равны. Возвращает отрицательное значение, если вызывающий объект предшествует дате. Возвращает положительное значение, если вызывающий объект старше даты.

5

int compareTo (объект объект)

Работает так же, как compareTo (Date), если obj имеет класс Date. В противном случае генерируется исключение ClassCastException.

6

логическое равно (Дата объекта)

Возвращает true, если вызывающий объект Date содержит те же время и дату, что и дата, заданная параметром date, в противном случае возвращает false.

7

long getTime ()

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

8

int hashCode ()

Возвращает хэш-код для вызывающего объекта.

9

void setTime (долгое время)

Устанавливает время и дату в соответствии с параметром time, который представляет собой время в миллисекундах, прошедшее с полуночи 1 января 1970 г.

10

Строка toString ()

Преобразует вызывающий объект Date в строку и возвращает результат.

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

Это очень простой способ получить текущую дату и время в Java. Вы можете использовать простой объект Date с методом toString () для печати текущей даты и времени следующим образом:

пример

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();

      // display time and date using toString()
      System.out.println(date.toString());
   }
}

Это даст следующий результат —

Вывод

on May 04 09:51:52 CDT 2009

Сравнение дат

Ниже приведены три способа сравнить две даты:

  • Вы можете использовать getTime (), чтобы получить количество миллисекунд, прошедших с полуночи 1 января 1970 года для обоих объектов, а затем сравнить эти два значения.

  • Вы можете использовать методы before (), after () и equals (). Так как 12-е число месяца предшествует 18-му, например, new Date (99, 2, 12) .before (new Date (99, 2, 18)) возвращает true.

  • Вы можете использовать метод compareTo (), который определяется интерфейсом Comparable и реализуется Date.

Форматирование даты с использованием SimpleDateFormat

SimpleDateFormat — это конкретный класс для форматирования и анализа дат с учетом языковых стандартов. SimpleDateFormat позволяет начать с выбора любых пользовательских шаблонов для форматирования даты и времени.

пример

import java.util.*;
import java.text.*;

public class DateDemo {

   public static void main(String args[]) {
      Date dNow = new Date( );
      SimpleDateFormat ft = 
      new SimpleDateFormat ("E yyyy.MM.dd 'at' hh:mm:ss a zzz");

      System.out.println("Current Date: " + ft.format(dNow));
   }
}

Это даст следующий результат —

Вывод

Current Date: Sun 2004.07.18 at 04:14:09 PM PDT

Коды простого формата DateFormat

Чтобы указать формат времени, используйте строку шаблона времени. В этом шаблоне все буквы ASCII зарезервированы как буквы шаблона, которые определены следующим образом:

символОписаниепример
GОн был назначеннымК
иГод в четырехзначном формате2001
MМесяц в годуИюль или 07
dДень в месяце10
часЧас в AM / PM (1 ~ 12)12
ЧАСЧас в день (0 ~ 23)22
mМинута в час30
sСекунда в минуту55
SМиллисекунды234
ЯВЛЯЕТСЯДень в неделювторник
DДень в году360
FДень недели в месяце2 (вторая среда июля)
вНеделя в году40
ВНеделя в месяц1
аAM / PM маркерВЕЧЕРА
kЧас в день (1 ~ 24)24
KЧас в AM / PM (0 ~ 11)10
с участиемЧасовой поясВосточное стандартное время
Escape для текстаРазделитель
«Одиночная цитата`

Форматирование даты с помощью printf

Форматирование даты и времени может быть выполнено очень легко с помощью метода printf . Вы используете двухбуквенный формат, начиная с t и заканчивая одной из букв таблицы, как показано в следующем коде.

пример

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();

      // display time and date
      String str = String.format("Current Date/Time : %tc", date );

      System.out.printf(str);
   }
}

Это даст следующий результат —

Вывод

Current Date/Time : Sat Dec 15 16:37:57 MST 2012

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

Индекс должен следовать сразу за% и должен заканчиваться знаком $.

пример

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();
  
      // display time and date
      System.out.printf("%1$s %2$tB %2$td, %2$tY", "Due date:", date);
   }
}

Это даст следующий результат —

Вывод

Due date: February 09, 2004

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

пример

import java.util.Date;
public class DateDemo {

   public static void main(String args[]) {
      // Instantiate a Date object
      Date date = new Date();
  
      // display formatted date
      System.out.printf("%s %tB %<te, %<tY", "Due date:", date);
   }
}

Это даст следующий результат —

Вывод

Due date: February 09, 2004

Символы преобразования даты и времени

символОписаниепример
cПолная дата и времяПн 04 мая 09:51:52 CDT 2009
FДата ISO 86012004-02-09
DДата в формате США (месяц / день / год)02/09/2004
Т24-часовое время18:05:19
р12-часовое время18:05:19
р24-часовое время, без секунд18:05
ИГод из четырех цифр (с ведущими нулями)2004
иПоследние две цифры года (с ведущими нулями)04
CПервые две цифры года (с ведущими нулями)20
BПолное название месяцаФевраль
бСокращенное название месяцаФев
mДвухзначный месяц (с ведущими нулями)02
dДвузначный день (с ведущими нулями)03
являетсяДвузначный день (без ведущих нулей)9
АПолное название дня неделипонедельник
аСокращенное название дня неделиМой
jТрехзначный день года (с ведущими нулями)069
ЧАСДвухзначный час (с ведущими нулями) от 00 до 2318
kДвухзначный час (без ведущих нулей) от 0 до 2318
IДвузначный час (с ведущими нулями), от 01 до 1206
лДвухзначный час (без нулей в начале), от 1 до 126
MДвузначные минуты (с ведущими нулями)05
SДвузначные секунды (с ведущими нулями)19
LТрехзначные миллисекунды (с ведущими нулями)047
NДевятизначные наносекунды (с ведущими нулями)047000000
PУтренний или дневной маркер прописными буквамиВЕЧЕРА
pСтрочный утренний или дневной маркервечера
с участиемRFC 822 числовое смещение от GMT-0800
С УЧАСТИЕМЧасовой поясТихоокеанское стандартное время
sСекунды с 1970-01-01 00:00:00 GMT1078884319
QМиллисекунды с 01.01.1970 00:00:00 GMT1078884319047

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

Разбор строк на даты

Класс SimpleDateFormat имеет несколько дополнительных методов, в частности parse (), который пытается проанализировать строку в соответствии с форматом, хранящимся в данном объекте SimpleDateFormat.

пример

import java.util.*;
import java.text.*;
  
public class DateDemo {

   public static void main(String args[]) {
      SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd"); 
      String input = args.length == 0 ? "1818-11-11" : args[0]; 

      System.out.print(input + " Parses as "); 
      Date t;
      try {
         t = ft.parse(input); 
         System.out.println(t); 
      } catch (ParseException e) { 
         System.out.println("Unparseable using " + ft); 
      }
   }
}

Примерный запуск вышеуказанной программы даст следующий результат:

Вывод

1818-11-11 Parses as Wed Nov 11 00:00:00 EST 1818

Сон какое-то время

Вы можете спать в течение любого периода времени от одной миллисекунды до срока службы вашего компьютера. Например, следующая программа будет спать на 3 секунды —

пример

import java.util.*;
public class SleepDemo {

   public static void main(String args[]) {
      try { 
         System.out.println(new Date( ) + "\n"); 
         Thread.sleep(5*60*10); 
         System.out.println(new Date( ) + "\n"); 
      } catch (Exception e) {
         System.out.println("Got an exception!"); 
      }
   }
}

Это даст следующий результат —

Вывод

Sun May 03 18:04:41 GMT 2009
Sun May 03 18:04:51 GMT 2009

Измерение прошедшего времени

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

пример

import java.util.*;
public class DiffDemo {

   public static void main(String args[]) {
      try {
         long start = System.currentTimeMillis( );
         System.out.println(new Date( ) + "\n");
         
         Thread.sleep(5*60*10);
         System.out.println(new Date( ) + "\n");
         
         long end = System.currentTimeMillis( );
         long diff = end - start;
         System.out.println("Difference is : " + diff);
      } catch (Exception e) {
         System.out.println("Got an exception!");
      }
   }
}

Это даст следующий результат —

Вывод

Sun May 03 18:16:51 GMT 2009
Sun May 03 18:16:57 GMT 2009
Difference is : 5993

Класс GregorianCalendar

GregorianCalendar — это конкретная реализация класса Calendar, который реализует обычный григорианский календарь, с которым вы знакомы. Мы не обсуждали класс Calendar в этом руководстве, вы можете найти для этого стандартную документацию Java.

Метод getInstance () Calendar возвращает GregorianCalendar, инициализированный текущей датой и временем в локали и часовом поясе по умолчанию. GregorianCalendar определяет два поля: AD и BC. Они представляют две эпохи, определенные григорианским календарем.

Также есть несколько конструкторов для объектов GregorianCalendar —

Sr.No.Конструктор и описание
1

Григорианский календарь()

Создает GregorianCalendar по умолчанию, используя текущее время в часовом поясе по умолчанию с локалью по умолчанию.

2

GregorianCalendar (int год, int месяц, int дата)

Создает GregorianCalendar с заданной датой, установленной в часовом поясе по умолчанию с локалью по умолчанию.

3

GregorianCalendar (int год, int месяц, int дата, int час, int минута)

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

4

GregorianCalendar (int год, int месяц, int дата, int час, int минута, int секунда)

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

5

GregorianCalendar (с местного на местный)

Создает GregorianCalendar на основе текущего времени в часовом поясе по умолчанию с заданной локалью.

6

GregorianCalendar (часовой пояс)

Создает GregorianCalendar на основе текущего времени в данном часовом поясе с локалью по умолчанию.

7

GregorianCalendar (часовой пояс, языковой стандарт aLocale)

Создает GregorianCalendar на основе текущего времени в заданном часовом поясе с заданной локалью.

Вот список нескольких полезных методов поддержки, предоставляемых классом GregorianCalendar:

Sr.No.Метод и описание
1

void add (целое поле, целое количество)

Добавляет указанное (подписанное) количество времени в указанное поле времени на основе правил календаря.

2

защищенная пустота computeFields ()

Преобразует UTC как миллисекунды в значения поля времени.

3

защищенная пустота computeTime ()

Переопределяет календарь. Преобразует значения поля времени в UTC в миллисекунды.

4

логическое равно (Object obj)

Сравнивает этот GregorianCalendar со ссылкой на объект.

5

int get (int поле)

Получает значение для заданного временного поля.

6

int getActualMaximum (целое поле)

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

7

int getActualMinimum (целое поле)

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

8

int getGreatestMinimum (целое поле)

Возвращает максимальное минимальное значение для данного поля, если оно варьируется.

9

Дата getGregorianChange ()

Получает дату изменения григорианского календаря.

10

int getLeastMaximum (целое поле)

Возвращает наименьшее максимальное значение для данного поля, если оно варьируется.

11

int getMaximum (целое поле)

Возвращает максимальное значение для данного поля.

12

Дата getTime ()

Получает текущее время этого календаря.

13

long getTimeInMillis ()

Получает текущее время этого календаря в виде длинного числа.

14

Часовой пояс getTimeZone ()

Получает часовой пояс.

15

int getMinimum (целое поле)

Возвращает минимальное значение для данного поля.

16

int hashCode ()

Переопределяет hashCode.

17

логическое isLeapYear (int год)

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

18

void roll (int field, логическое вверх)

Добавляет или вычитает (вверх / вниз) одну единицу времени в заданном поле времени без изменения больших полей.

19

void set (поле int, значение int)

Устанавливает поле времени с заданным значением.

20

void set (int год, int месяц, int дата)

Устанавливает значения для полей года, месяца и даты.

21

void set (int год, int месяц, int дата, int час, int минута)

Устанавливает значения для полей года, месяца, даты, часа и минуты.

22

набор void (int год, int месяц, int дата, int час, int минута, int секунда)

Устанавливает значения для полей года, месяца, даты, часа, минуты и секунды.

23

void setGregorianChange (Дата, дата)

Устанавливает дату изменения GregorianCalendar.

24

void setTime (Дата, дата)

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

25

void setTimeInMillis (длинный миллис)

Устанавливает текущее время этого Календаря из заданного длинного значения.

26

void setTimeZone (значение часового пояса)

Устанавливает часовой пояс с заданным значением часового пояса.

27

Строка toString ()

Возвращает строковое представление этого календаря.

пример

import java.util.*;
public class GregorianCalendarDemo {

   public static void main(String args[]) {
      String months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", 
         "Oct", "Nov", "Dec"};
      
      int year;
      // Create a Gregorian calendar initialized
      // with the current date and time in the
      // default locale and timezone.
      
      GregorianCalendar gcalendar = new GregorianCalendar();
      
      // Display current time and date information.
      System.out.print("Date: ");
      System.out.print(months[gcalendar.get(Calendar.MONTH)]);
      System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");
      System.out.println(year = gcalendar.get(Calendar.YEAR));
      System.out.print("Time: ");
      System.out.print(gcalendar.get(Calendar.HOUR) + ":");
      System.out.print(gcalendar.get(Calendar.MINUTE) + ":");
      System.out.println(gcalendar.get(Calendar.SECOND));

      // Test if the current year is a leap year
      if(gcalendar.isLeapYear(year)) {
         System.out.println("The current year is a leap year");
      }else {
         System.out.println("The current year is not a leap year");
      }
   }
}

Это даст следующий результат —

Вывод

Date: Apr 22 2009
Time: 11:25:27
The current year is not a leap year

Полный список констант, доступных в классе Calendar, можно найти в стандартной документации Java.

Выберите поля, которые будут показаны. Прочие будут скрыты. Перктаскивайте мышкой для изменения порядка полей.
  • Изображение
  • SKU
  • Рейтинг
  • Цена
  • Запасы
  • Доступность
  • В корзину
  • Описание
  • Содержимое
  • Вес
  • Размеры
  • Дополнительная информация
  • Атрибуты
  • Custom attributes
  • Настраиваемые поля
Сравнить
Список желаний 0
Открыть страницу желаний Продолжить покупки