Пакет java.util предоставляет класс Date для инкапсуляции текущей даты и времени. Класс Date предоставляет два конструктора для создания экземпляров объектов Date.
Первый конструктор инициализирует объект текущей датой и временем.
Дата( )
Второй конструктор получает параметр — количество миллисекунд, прошедших с 1 января 1970 года.
Дата (длинная миллисекунда)
После создания объекта Date вы можете вызвать следующие методы.
серийный номер | Методы и описание |
---|---|
1 | boolean after(Date date) возвращает true, если объект Date, вызывающий этот метод, появился после указанной даты, в противном случае он возвращает false. |
2 | boolean before(Date date) возвращает true, если объект Date, вызывающий этот метод, предшествует указанной дате, в противном случае он возвращает false. |
3 | Object clone() возвращает копию этого объекта. |
4 | int CompareTo(Date date) сравнивает объект Date при вызове этого метода с указанной датой. Когда они равны, возвращается 0. Если вызывающий объект появился раньше указанной даты, возвращается отрицательное число. Вызывающий объект возвращает положительное число после указанной даты. |
5 | int CompareTo(Object obj) Если obj имеет тип Date, операция эквивалентна операции CompareTo(Date). В противном случае выдается ClassCastException. |
6 | Логическое значение равно(Дата объекта) возвращает true, когда объект Date, вызывающий этот метод, равен указанной дате, в противном случае он возвращает false. |
7 | long getTime() возвращает количество миллисекунд, представленных этим объектом Date, с 1 января 1970 года 00:00:00 по Гринвичу. |
8 | int hashCode() возвращает значение хеш-кода этого объекта. |
9 | void setTime(long time) устанавливает время и дату, используя количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по Гринвичу. |
10 | String toString() преобразует объект Date в представление String и возвращает строку. |
Получить текущую дату и время в Java очень просто. Используйте метод toString() объекта Date, чтобы распечатать текущую дату и время, как показано ниже:
импортировать java.util.Date;
общественный класс Main{
public static void main(String args[]) {
//Инициализация объекта Date Date date = new Date();
//Используем функцию toString() для отображения даты и времени System.out.println(date.toString());
}
}
Результаты компиляции и запуска приведенного выше примера следующие:
Пн 04 мая 09:51:52 CDT 2013
Java использует следующие три метода для сравнения двух дат:
Используйте метод getTime(), чтобы получить две даты (количество миллисекунд с 1 января 1970 года), а затем сравните два значения.
Используйте методы before(), after() иquals(). Например, если 12-е число месяца наступает раньше 18-го, то new Date(99, 2, 12).before(new Date (99, 2, 18)) возвращает true.
Используйте метод CompareTo(), который определен интерфейсом Comparable, а класс Date реализует этот интерфейс.
SimpleDateFormat — это класс для форматирования и анализа дат с учетом локали. SimpleDateFormat позволяет вам выбрать любой определяемый пользователем формат даты и времени для запуска. Например:
импортировать java.util.*;
импортировать java.text.*;
общественный класс Main{
public static void main(String args[]) {
Дата dNow = новая дата( );
SimpleDateFormat ft =
новый SimpleDateFormat ("E гггг.ММ.дд 'at' чч:мм:сс а ззз");
System.out.println("Текущая дата: " + ft.format(dNow));
}
}
Результаты компиляции и запуска приведенного выше примера следующие:
Текущая дата: воскресенье 2004.07.18, 16:14:09 по тихоокеанскому времени.
Строка шаблона времени используется для указания формата времени. В этом режиме все буквы ASCII зарезервированы как буквы шаблона, определяемые следующим образом:
письмо | описывать | Пример |
---|---|---|
Г | Знак эпохи | ОБЪЯВЛЕНИЕ |
й | четырехзначный год | 2001 г. |
М | месяц | июля или 07 |
д | число месяца | 10 |
час | Часы формата AM/PM (1~12) | 12 |
ЧАС | Час дня (0~23) | двадцать два |
м | минуты | 30 |
с | секунды | 55 |
С | миллисекунды | 234 |
Э | день недели | Вторник |
Д | дни года | 360 |
Ф | День недели месяца | 2 (вторая среда июля) |
ш | неделя года | 40 |
Вт | Неделя месяца | 1 |
а | Отметка утра/после полудня | ПМ |
к | Час дня (1~24) | двадцать четыре |
К | AM/PM (0~11) формат часов | 10 |
я | часовой пояс | Восточное поясное время |
' | разделитель текста | Разделитель |
" | одинарная кавычка | ` |
Метод printf упрощает форматирование времени и даты. Используйте двухбуквенный формат, который начинается с буквы t и заканчивается буквой из таблицы ниже. Например:
импортировать java.util.Date;
общественный класс Main{
public static void main(String args[]) {
//Инициализация объекта Date Date date = new Date();
// Используйте toString() для отображения даты и времени String str = String.format("Текущая дата/время: %tc", date);
System.out.printf(str);
}
}
Результаты компиляции и запуска приведенного выше примера следующие:
Текущая дата/время: суббота, 15 декабря, 16:37:57 MST 2012 г.
Если вам нужно указать дату несколько раз, форматировать каждую ее часть таким образом немного сложнее. Таким образом, строка формата может использоваться для указания индекса форматируемого параметра.
Индекс должен следовать сразу за % и заканчиваться на $. Например:
импортировать java.util.Date;
общественный класс Main{
public static void main(String args[]) {
//Инициализируем объект Date Date date = new Date();
// Используйте toString() для отображения даты и времени System.out.printf("%1$s %2$tB %2$td, %2$tY",
«Срок платежа:», дата);
}
}
Результаты компиляции и запуска приведенного выше примера следующие:
Срок сдачи: 9 февраля 2004 г.
Альтернативно вы можете использовать флаг <. Это указывает на то, что ранее отформатированные параметры необходимо использовать снова. Например:
импортировать java.util.Date;
общественный класс Main{
public static void main(String args[]) {
//Инициализация объекта Date Date date = new Date();
// Отображение времени форматирования System.out.printf("%s %tB %<te, %<tY",
«Срок платежа:», дата);
}
}
Результаты компиляции и запуска приведенного выше примера следующие:
Срок сдачи: 9 февраля 2004 г.
характер | описывать | пример |
с | Полная дата и время | Пн 04 мая 09:51:52 CDT 2009 |
Ф | Дата формата ISO 8601 | 09.02.2004 |
Д | Дата в американском формате (месяц/день/год) | 09.02.2004 |
Т | 24 часа | 18:05:19 |
р | 12 часов | 18:05:19 |
Р | 24-часовое время, без учета секунд | 18:05 |
Да | 4-значный год (включая ведущий 0) | 2004 г. |
й | Последние 2 цифры года (включая ведущий 0) | 04 |
С | Первые 2 цифры года (включая ведущий 0) | 20 |
Б | полное название месяца | февраль |
б | сокращение месяца | февраль |
н | 2-значный месяц (включая ведущий 0) | 02 |
д | 2-значная дата (включая ведущий 0) | 03 |
е | 2-значная дата (без ведущего 0) | 9 |
А | Полное название недели | Понедельник |
а | сокращение недели | Пн. |
дж | 3-значный год (включая ведущий 0) | 069 |
ЧАС | 2-значный час (включая ведущий 0), от 00 до 23 | 18 |
к | 2-значный час (не включая ведущий 0), от 0 до 23 | 18 |
я | 2-значный час (включая ведущий 0), от 01 до 12 | 06 |
л | 2-значный час (без ведущего 0), от 1 до 12 | 6 |
М | 2-значные минуты (включая ведущий 0) | 05 |
С | 2-значные секунды (включая ведущие нули) | 19 |
л | 3 цифры миллисекунд (включая ведущие нули) | 047 |
Н | 9-битная наносекунда (включая ведущий 0) | 047000000 |
П | послеобеденный знак заглавной буквы | ПМ |
п | Знак дня в нижнем регистре и верхнем регистре | вечер |
я | Цифровое смещение RFC 822 от GMT | -0800 |
З | часовой пояс | Тихоокеанское стандартное время |
с | Количество секунд с 01.01.1970 00:00:00 по Гринвичу | 1078884319 |
вопрос | С 01.01.1970 00:00:00 по Гринвичу | 1078884319047 |
Есть и другие полезные классы, связанные с датой и временем. Для получения более подробной информации вы можете обратиться к документации по стандартам Java.
Класс SimpleDateFormat имеет несколько дополнительных методов, в частности parse(), который пытается проанализировать строку в соответствии с форматированным хранилищем данного объекта SimpleDateFormat. Например:
импортировать java.util.*;
импортировать java.text.*;
общественный класс Main{
public static void main(String args[]) {
SimpleDateFormat ft = новый SimpleDateFormat («гггг-ММ-дд»);
Строковый ввод = args.length == 0 ? "1818-11-11": args[0];
System.out.print(input + «Разбирать как»);
Дата т;
пытаться {
т = ft.parse(вход);
System.out.println(т);
} catch (ParseException e) {
System.out.println("Невозможно разобрать с помощью " + ft);
}
}
}
Результаты компиляции и запуска приведенного выше примера следующие:
$javaDateDemo
11 ноября 1818 г. Анализирует среду, 11 ноября 00:00:00 GMT 1818 г.
$ Java DateDemo 1 декабря 2007 г.
2007-12-01 Анализируется по субботам, 1 декабря, 00:00:00 по Гринвичу 2007 г.
Ява сон (сон)
Вы можете перевести программу в спящий режим на миллисекунду или на то время, пока работает ваш компьютер. Например, следующая программа находится в режиме ожидания 3 секунды:
импортировать java.util.*;
общественный класс Main {
public static void main(String args[]) {
пытаться {
System.out.println(new Date() + "n");
Thread.sleep(5*60*10);
System.out.println(new Date() + "n");
} catch (Исключение е) {
System.out.println("Получено исключение!");
}
}
}
Результаты компиляции и запуска приведенного выше примера следующие:
Вс, 3 мая 18:04:41 GMT 2009 г.
Вс, 3 мая 18:04:44 GMT 2009 г.
В примере ниже показано, как измерить интервал времени в миллисекундах:
импортировать java.util.*;
общественный класс Main{
public static void main(String args[]) {
пытаться {
длинный старт = System.currentTimeMillis();
System.out.println(new Date() + "n");
Thread.sleep(5*60*10);
System.out.println(new Date() + "n");
длинный конец = System.currentTimeMillis();
длинный diff = конец — начало;
System.out.println("Разница: " + diff);
} catch (Исключение е) {
System.out.println("Получено исключение!");
}
}
}
Результаты компиляции и запуска приведенного выше примера следующие:
Вс, 3 мая 18:16:51 GMT 2009 г.
Вс, 3 мая 18:16:54 GMT 2009 г.
Разница: 3050
Теперь мы можем отформатировать и создать объект даты, но как мы можем установить и получить определенные части данных даты, такие как час, день или минута, и как мы можем добавить или вычесть значения из этих частей даты? ? Что? Ответ: использовать класс Calendar.
Класс Calendar гораздо более мощный, чем класс Date, и его реализация также более сложна, чем класс Date.
Класс Calendar — это абстрактный класс, который реализует объекты конкретных подклассов при фактическом использовании. Процесс создания объектов прозрачен для программистов, и его необходимо создавать только с помощью метода getInstance.
Calendar c = Calendar.getInstance();//По умолчанию используется текущая дата
Чтобы использовать класс Calendar для представления определенного времени, необходимо сначала создать объект Calendar, а затем установить в объекте параметры года, месяца и дня для завершения.
//Создаем объект Calendar, представляющий 12 июня 2009 г. Calendar c1 = Calendar.getInstance();
c1.set(2009, 6 - 1, 12);
Эти константы используются в классе Calendar для представления различных значений. Многие классы jdk фактически используют эту идею.
постоянный | описывать |
---|---|
Календарь.ГОД | годы |
Календарь.МЕСЯЦ | месяц |
Календарь.ДАТА | дата |
Calendar.DAY_OF_MONTH | Дата имеет то же значение, что и поле выше. |
Календарь.ЧАС | час в 12-часовом формате |
Календарь.HOUR_OF_DAY | час в 24-часовом формате |
Календарь.МИНУТА | минута |
Календарь.SECOND | Второй |
Calendar.DAY_OF_WEEK | день недели |
Установить настройки
нравиться:
Календарь c1 = Calendar.getInstance();
Вызов:
публичный окончательный набор void (целое число, целое число, целое число)
c1.set(2009, 6 - 1, 12);//Установим год, месяц и день объекта Calendar c1 как: 2009, 5, 12
Использовать настройки типа поля
Если вы устанавливаете значение только определенного поля, например даты, вы можете использовать следующий метод установки:
public void set (поле int, значение int)
Установите дату, представленную объектом c1, на 10-е число, и все остальные значения будут пересчитаны.
c1.set(Календарь.ДАТА,10);
Установите год, представленный объектом c1, равным 2008, и все остальные значения будут пересчитаны.
c1.set(Календарь.ГОД,2008);
Значение другого набора атрибутов поля можно понять по аналогии.
Добавить настройки
Календарь c1 = Calendar.getInstance();
Добавьте 10 к дате объекта c1, которая является датой через 10 дней после даты, представленной c1. Все остальные значения будут пересчитаны.
c1.add(Календарь.ДАТА, 10);
Вычтите 10 из даты объекта c1, которая является датой за 10 дней до даты, представленной c1. Все остальные значения будут пересчитаны.
c1.add(Календарь.ДАТА, -10);
Значение add для других атрибутов поля можно понять по аналогии.
Календарь c1 = Calendar.getInstance();
// Получаем год intyear = c1.get(Calendar.YEAR);
// Получаем месяц intmonth = c1.get(Calendar.MONTH) + 1;
// Получаем дату int date = c1.get(Calendar.DATE);
// Получаем час inthour = c1.get(Calendar.HOUR_OF_DAY);
// Получаем минуты int минуту = c1.get(Calendar.MINUTE);
// Получаем второе int Second = c1.get(Calendar.SECOND);
// Получаем день недели (обратите внимание (это отличие от класса Date): 1 представляет воскресенье, 2 представляет неделю 1, 3 представляет вторник и т. д.)
int day = c1.get(Calendar.DAY_OF_WEEK);
Класс Calendar реализует григорианский календарь, а GregorianCalendar — это конкретная реализация класса Calendar.
Метод getInstance() календаря возвращает объект GregorianCalendar, инициализированный по умолчанию текущим языковым стандартом и часовым поясом. GregorianCalendar определяет два поля: AD и BC. Они представляют две эпохи, определенные григорианским календарем.
Ниже перечислены несколько конструкторов объекта GregorianCalendar:
серийный номер | Конструктор и описание |
1 | GregorianCalendar() Создает GregorianCalendar по умолчанию, используя текущее время в часовом поясе по умолчанию с языковым стандартом по умолчанию. |
2 | GregorianCalendar(int Year, Int Month, Int Date) Создает GregorianCalendar с заданными настройками даты в часовом поясе по умолчанию с языковым стандартом по умолчанию. |
3 | GregorianCalendar(int Year, Int Month, Int Date, Int Hour, Int Minut) Создает GregorianCalendar с заданными настройками даты и времени для часового пояса по умолчанию с языковым стандартом по умолчанию. |
4 | GregorianCalendar(int год, int месяц, int дата, int час, int минута, int секунда) Создает GregorianCalendar с заданными настройками даты и времени для часового пояса по умолчанию с языковым стандартом по умолчанию. |
5 | GregorianCalendar(Locale aLocale) Создает GregorianCalendar на основе текущего времени в часовом поясе по умолчанию с заданным языковым стандартом. |
6 | GregorianCalendar(TimeZone Zone) Создает GregorianCalendar на основе текущего времени в заданном часовом поясе с языковым стандартом по умолчанию. |
7 | GregorianCalendar(TimeZone Zone, Locale aLocale) Создает GregorianCalendar на основе текущего времени в заданном часовом поясе с заданным языковым стандартом. |
Вот список некоторых полезных методов, предоставляемых классом GregorianCalendar:
серийный номер | Методы и инструкции |
1 | void add(int field, int sum) Добавляет указанное (подписанное) количество времени в данное поле календаря в соответствии с правилами календаря. |
2 | protected void ComputeFields() преобразует значение миллисекунды UTC во значение временной области |
3 | protected void ComputeTime() переопределяет Calendar и преобразует значение временной области в миллисекунды UTC |
4 | логическое значение равно(Object obj) Сравнивает этот GregorianCalendar с указанным объектом. |
5 | int get(int field) получает значение времени указанного поля |
6 | int getActualMaximum(int field) возвращает текущую дату, максимальное значение данного поля |
7 | int getActualMinimum(int field) возвращает текущую дату, минимальное значение данного поля |
8 | int getGreatestMinimum(int field) Возвращает наибольшее минимальное значение для данного поля календаря в этом экземпляре GregorianCalendar. |
9 | Date getGregorianChange() Получает дату изменения григорианского календаря. |
10 | int getLeastMaximum(int field) Возвращает наименьшее максимальное значение данного поля календаря для этого экземпляра GregorianCalendar. |
11 | int getMaximum(int field) Возвращает максимальное значение данного поля календаря для этого экземпляра GregorianCalendar. |
12 | Date getTime() получает текущее время календаря. |
13 | long getTimeInMillis() получает текущее время календаря, представленное длинным целым числом |
14 | TimeZone getTimeZone() получает часовой пояс. |
15 | int getMinimum(int field) возвращает минимальное значение данного поля. |
16 | int hashCode() переопределяет hashCode. |
17 | логическое значение isLeapYear(intyear) определяет, является ли данный год високосным. |
18 | voidroll(int field, boolean up) Добавляет или вычитает (вверх/вниз) одну единицу времени из заданного поля времени, не изменяя поля большего размера. |
19 | void set(int field, int value) устанавливает поле времени с заданным значением. |
20 | void set(int Year, Int Month, Int Date) устанавливает значение года, месяца и дня. |
двадцать один | void set(int год, int месяц, int дата, int час, int минута) устанавливает значение года, месяца, дня, часа и минуты. |
двадцать два | void set(int Year, Int Month, Int Date, Int Hour, Int Minut, Int Second) устанавливает значение года, месяца, дня, часа, минуты и секунды. |
двадцать три | void setGregorianChange(Date date) устанавливает дату изменения GregorianCalendar. |
двадцать четыре | void setTime(Date date) устанавливает текущее время календаря с заданной датой. |
25 | void setTimeInMillis(long millis) устанавливает текущее время календаря с заданными длинными миллисекундами. |
26 | void setTimeZone(значение TimeZone) Устанавливает текущий часовой пояс с заданным значением часового пояса. |
27 | String toString() возвращает строку, представляющую календарь. |
импортировать java.util.*;
общественный класс GregorianCalendarDemo {
public static void main(String args[]) {
Строка месяцев[] = {
«Январь», «Февраль», «Март», «Апрель»,
«Май», «Июнь», «Июль», «Август»,
«сентябрь», «октябрь», «ноябрь», «декабрь»};
международный год;
// Инициализируем григорианский календарь // Используем текущее время и дату // По умолчанию местное время и часовой пояс GregorianCalendar gcalendar = new GregorianCalendar();
// Отображение текущей информации о времени и дате System.out.print("Date: ");
System.out.print(месяцы[gcalendar.get(Calendar.MONTH)]);
System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");
System.out.println(год = gcalendar.get(Calendar.YEAR));
System.out.print("Время: ");
System.out.print(gcalendar.get(Calendar.HOUR) + ":");
System.out.print(gcalendar.get(Calendar.MINUTE) + ":");
System.out.println(gcalendar.get(Calendar.SECOND));
// Проверяем, является ли текущий год високосным if(gcalendar.isLeapYear(year)) {
System.out.println("Текущий год високосный");
}
еще {
System.out.println("Текущий год не високосный");
}
}
}
Результаты компиляции и запуска приведенного выше примера следующие:
Дата: 22 апреля 2009 г.
Время: 11:25:27
Текущий год не високосный
Полный список классов Calender можно найти в стандартной документации Java.