Java предоставляет класс даты в пакете java.util, который инкапсулирует текущую дату и время.
Класс даты поддерживает два конструктора. Первый конструктор инициализирует текущую дату и время объекта.
Дата( )
Следующий конструктор получает параметр, равный количеству миллисекундов с полуночи 1 января 1970 года.
Дата (длинная миллисек)
После того, как есть доступный объект даты, вы можете вызвать любой из следующих поддерживаемых методов, чтобы использовать время:
| С | Методы и описания |
|---|---|
| 1 | логическое после (дата даты) Верните True, если объект даты вызова содержит или позднее, чем указанная дата, в противном случае верните False. |
| 2 | логическое до (дата даты) Верните True, если объект даты вызовов содержит или раньше, чем дата, указанная датой, в противном случае верните false. |
| 3 | Объектный клон () Повторите звонок в объект даты. |
| 4 | int compareto (дата дата) Сравните значение объекта вызова с датой. Если эти два значения равны, возвращайте 0. Возвращает отрицательное значение, если объект вызовов ранее, чем дата. Возвращает положительное значение, если объект вызова будет позже, чем дата. |
| 5 | int сравнивать (объект obj) Используйте одну и ту же операцию сравнения (дата), если OBJ является датой класса. В противном случае он бросает класссенацию. |
| 6 | Boolean Equals (дата объекта) Верните True, если объект даты вызова содержит одно и то же время и дата даты, в противном случае, верните false. |
| 7 | долгое время () Возвращает количество миллисекунд, которые прошли с 1 января 1970 года. |
| 8 | int hashcode () Возвращает хэш -код вызывающего объекта. |
| 9 | void settime (давно) Устанавливает указанное время, которое представляет время, прошедшее в миллисекундах с полуночи 1 января 1970 года. |
| 10 | String toString () Вызовите объект Date, чтобы преобразовать в строку и вернуть результат. |
Import java.util.date; открытый класс DateMo {public static void main (String args []) {// создание создания даты даты даты даты даты даты = новая дата (); // Отображение времени и даты с использованием system.) system.out.println (date.tostring ()); }}Это даст следующие результаты:
Пн, 04 мая 09:51:52 CDT 2009
Сравнение даты
Есть три способа сравнения двух дат:
Даты формата с использованием SimpleDateFormat
SimpleDateFormat - это бетонный класс, используемый локально для форматирования и преобразования дат. SimpleDateFormat позволяет выбирать пользовательские схемы на сегодняшний день и формат времени. Например:
Импорт java.util.*; import java.text.*; public class dateemo {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 («Текущая дата:» + ft.format (dnow)); }}Это даст следующие результаты:
Текущая дата: Sun 2004.07.18 в 04:14:09 PDT
Простой код формата dateformat
Чтобы указать формат времени, используйте строку шаблона времени. В этой схеме все буквы ASCII сохраняются в виде букв с шаблонами, которые определяются следующим образом:
| характер | описывать | пример |
|---|---|---|
| Глин | Индикатор времени | ОБЪЯВЛЕНИЕ |
| у | Четырехзначные годы | 2001 |
| М | Середина года | Июль или 07 |
| дюймовый | Дата месяца | 10 |
| час | Время я/PM (1 ~ 12) | 12 |
| ЧАС | Час дня (0 ~ 23) | двадцать два |
| м | Минуты часов | 30 |
| с | Секунды минут | 55 |
| С | миллисекунд | 234 |
| Эн | День недели | Вторник |
| Дюймовый | День года | 360 |
| Фон | День недели месяца | 2 (вторая ср. В июле) |
| W. | Середина года | 40 |
| W. | Неделя месяца | 1 |
| а | Маркеры AM/PM | Премьер -министр |
| k | Час дня (1 ~ 24) | двадцать четыре |
| K | Часы утра/PM (0 ~ 11) | 10 |
| Z. | Часовой пояс | Восточное стандартное время |
| ' | Оставить текст | Разделитель |
| " | Одиночные кавычки | ` |
Import java.util.date; открытый класс DateMo {public static void main (String args []) {// создание создания даты даты даты даты даты даты = новая дата (); // Отображение времени и даты с использованием toString () string str = string.format («Текущая дата/время: %tc», date); System.out.printf (str); }}Это даст следующие результаты:
Текущая дата/время: сб 15 декабря 16:37:57 MST 2012
Это плохая практика для обеспечения многократного форматирования дат. Строка формата может указывать индекс параметров, которые будут отформатированы.
Индекс должен немедленно следовать % и должен быть расторгнут $. Например:
Import java.util.date; открытый класс DateMo {public static void main (String args []) {// создание создания даты даты даты даты даты даты = новая дата (); // время отображения и дата с использованием system.) system.out.printf (« %1 $ s %2 $ tb %2 $ td, %2 $ ty», «Дата срока:«, дата); }}Это даст следующие результаты:
Дата назначения: 09 февраля 2004 г.
В качестве альтернативы, <флаг можно использовать. Это означает те же параметры и должны использоваться снова в соответствии со спецификациями вышеуказанного формата. Например:
Import java.util.date; открытый класс DateMo {public static void main (String args []) {// создание создания даты даты даты даты даты даты = новая дата (); // Отображение форматированной даты системы. }}Это даст следующие результаты:
Дата назначения: 09 февраля 2004 г.
Дата и временные конверсии символов
| характер | описывать | пример |
|---|---|---|
| в | Полная дата и время | Пн, 04 мая 09:51:52 CDT 2009 |
| Фон | ISO 8601 Дата | 2004-02-09 |
| Дюймовый | Время формата США (месяц/день/год) | 09/09/2004 |
| Т | 24-кратная система | 18:05:19 |
| ведущий | 12-кратная система | 06:05:19 вечера |
| Ведущий | 24-кратная система, без секунд | 18:05 |
| У | Четырехзначный год (используя столбец первой строки Zero) | 2004 |
| у | Последние два цифры года (с использованием столбца первой строки Zero) | 04 |
| В | Первые две цифры года (используя столбец первой строки Zero) | 20 |
| Беременный | Название полного месяца | Февраль |
| беременный | Аббревиатура Месяц Имя | Февраль |
| м | Двухзначные месяцы (используя столбец первой строки Zero) | 02 |
| дюймовый | Двухметная дата (используя столбец первой строки Zero) | 03 |
| эн | Дву цифр дата (без переходного нулевого столбца) | 9 |
| А | Полная неделя название | Понедельник |
| а | Аббревиатура названия недели | Пн |
| Дж | Трехзначные дни в середине года (используя столбец первой строки Zero) | 069 |
| ЧАС | Двухзначные часы (с использованием столбца первой строки Zero), между 00 и 23 | 18 |
| k | Дву цифровые часы (без переходного нулевого столбца), между 0 и 23 | 18 |
| я | Двухзначные часы (с использованием столбца первой строки Zero), между 01 и 12 | 06 |
| л | Двухзначные часы (без прямой нулевой столбцы), от 1 до 12 | 6 |
| М | Двухзначные минуты (используйте столбец первой строки Zero) | 05 |
| С | Двухзначные секунды (используйте столбец первой строки Zero) | 19 |
| Л | Трехзначные миллисекунды (используя столбец первой строки Zero) | 047 |
| Не | Наносекунд девять цифр (используя столбец первой строки Zero) | 047000000 |
| П | Капитализация дневной марки | Премьер -министр |
| п | Нижняя часть дневной отметки | премьер -министр |
| Z. | RFC 822 смещение от номера GMT | -0800 |
| Z. | Часовой пояс | Тихоокеанское стандартное время |
| с | Секунды с 1970-01-01 00:00:00 | 1078884319 |
| Q. | GMT с 1970-01-01 00:00:00 | 1078884319047 |
Дата преобразования строки
Класс SimpleDateFormat имеет некоторые дополнительные методы, такие как Parse (), которые пытаются преобразовать строку на основе формата объекта, хранящегося в данном SimpleDateFormat. Например:
импортировать java.util.*; import java.text.*; public class dateemo {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 + «Подготовки как»); Дата Т; try {t = ft.parse (input); System.out.println (t); } catch (parseException e) {System.out.println ("Непосредственно с использованием" + ft); }}}Запуск примера вышеуказанной программы даст следующие результаты:
$ java DateMo1818-11-11 Обработчики, как ср.
Спать на некоторое время
Вы можете работать в любое время во время спячки с миллисекунды до всего жизненного цикла вашего компьютера. Например, следующая программа будет спать в течение 10 секунд:
импортировать 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 ("получил исключение!"); }}}Это даст следующие результаты:
Солнце 03 мая 18:04:41 GMT 2009Sun 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 ("Разница:" + diff); } catch (Exception e) {System.out.println ("получил исключение!"); }}}Это даст следующие результаты:
Солнце 03 мая 18:16:51 GMT 2009Sun 03 мая 18:16:57 GMT 2009 Дифференция: 5993
Грегорианкалендарный класс
GregorianCalendar - это конкретная реализация класса календаря, то есть реализация нормального григорианского григорианского григорианского. Класс календаря не обсуждается в этом уроке, вы можете проверить стандартную документацию Java.
Метод 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 Miname) Создает GregorianCalendar с данной датой и временем, установленным в часовой пояс по умолчанию с локалью по умолчанию. |
| 4 | Gregoriancalendar (int Year, int Month, Int Date, Int Hour, Int Miname, Int Second) Построить григорианкалендар с данной датой и временем, установленным в часовой пояс по умолчанию с локалью по умолчанию |
| 5 | Gregoriancalendar (locale alocale) Создайте GregorianCalendar на основе текущего времени и часового пояс по умолчанию данного локали. |
| 6 | Gregoriancalendar (зона часового пояса) Основываясь на текущем времени, GregorianCalendar встроен в данном часовом поясе с использованием локали по умолчанию. |
| 7 | GregorianCalendar (зона часового пояса, Locale Alocale) Грегорианкалендарь построен на основе текущего времени и данного часового пояса данного локали. |
| С | Методы и описания |
|---|---|
| 1 | void add (int field, int sum) Правило, основанное на календаре, добавляет указанное (подписанное) количество времени к данному полю времени. |
| 2 | Защищенная void computefields () Преобразовать UTC в миллисекундное значение поля времени. |
| 3 | Защищенная void computetime () Перезаписать миллисекунд, в которых календарь преобразует значение временной домены - UTC. |
| 4 | логическое равное (объект obj) Этот GregorianCalendar сравнивается с ссылкой на объект. |
| 5 | int get (int field) Получает значение данного домена времени. |
| 6 | int getactualmaximum (int field) Возвращает максимально возможное значение поля, приведенного в текущую дату. |
| 7 | int getactualminimum (int field) Возвращает минимальное значение, которое может иметь поле, с учетом текущей даты. |
| 8 | int getGreateStminimum (int field) Возвращает высокое и самое низкое значение (если есть изменение) для данного поля. |
| 9 | Дата GetGregorIanChange () Получите дату изменения в григорианском календаре. |
| 10 | int getLeastMaximum (int field) Возвращает самое низкое максимальное значение для данного поля, если есть изменение. |
| 11 | int getmaximum (int field) Возвращает максимальное значение в данном поле. |
| 12 | Дата gettime () Получите текущее время календаря. |
| 13 | Long TimeInmillis () Текущее время, чтобы получить календарь. |
| 14 | Timezone getTimezone () Получите часовой пояс. |
| 15 | int getminimum (int field) Возвращает минимальное значение в данном поле. |
| 16 | int hashcode () Перепишите хэшкод. |
| 17 | логический IsleApyear (int Year) Определяет, что определенный год - выступление. |
| 18 | void roll (int field, boolean up) Добавьте или вычтите время (вверх/вниз) время (вверх/вниз) единицу в данном поле времени, не изменяя большее поле. |
| 19 | void set (int field, int value) Устанавливает поле времени с заданным значением. |
| 20 | void set (int Год, int month, int date) Установить стоимость года, месяца и дня. |
| двадцать один | void set (int Год, месяц int, int date, int int miname) Установите на год, месяц, день, часовые и минутные значения. |
| двадцать два | void set (int Год, int month, int date, int cour, int miname, int second) Установите стоимость года, месяца, дня, часа, минуты и второго места. |
| двадцать три | void SetGregorIanChange (дата даты) Установите дату изменения GregorianCalendar. |
| двадцать четыре | void settime (дата даты) Устанавливает текущее время и дату календаря. |
| 25 | void settimeInmillis (Long Millis) Установите текущее время календаря из данного длинного значения. |
| 26 | void settimezone (значение часового пояса) Устанавливает часовой пояс с заданным значением часового пояса. |
| 27 | String toString () Возвращает строковое представление этого календаря. |
Импорт java.util.*; открытый класс gregoriancalendardemo {public static void main (string args []) {string months [] = {"jan", "feb", "mar", "Apr", "May", "Jun", "jul", "aug", "sep", "Oct", "Nov", "Dec"}; int Год; // Создать инициализированный GregorianCalendar // с текущей датой и временем в // локале по умолчанию и часовым поясам. Gregoriancalendar gcalendar = new gregoriancalendar (); // Отображение текущего времени и даты информации. System.out.print («Дата:»); 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.println (gcalendar.get (calendar.minute) + ":"); System.out.println (gcalendar.get (calendar.second)); // Проверка, если текущий год является лечебным годом, если (gcalendar.isleapyear (Год)) {System.out.println («Текущий год - лечебный год»); } else {System.out.println («Текущий год не лечебный год»); }}}Это даст следующие результаты:
Дата: 22 апреля 2009 г. Время: 11: 25: 27 Текущий год не стал
Календарный апплет
Давайте посмотрим на апплет календаря. Здесь мы используем традиционную структуру MVC для разработки трех категорий: CalendarViewer, CalendarController и Calendarmodel.
CalendarViewer.java в основном обрабатывает пользовательский интерфейс, использует существующий код, организует его и извлекает бизнес -логику, чтобы фокусироваться на обработке дисплеев.
CalendarViewer.java
Public Class CalendarViewer Extens JWindow реализует ActionListener {jPanel CalendaryMpanel = null; Jbutton leftbutton = new jbutton ("<<"); Jbutton rightbutton = new jbutton (">>"); Метка yearlabel = new Label (); Метка Monthlabel = new Label (); Метка прошедшего hadayslabel = new Label (); Jpanel calendarwdpanel = null; // - это корпус общего включения Calendar_week и Calendar_days jpanel calendarweekpanel = null; // макет для еженедельных колонн jpanel calendardayspanel = null; // макет для даты колонны JPanel Calendarexitpanel = null; Jbutton quitbutton = new jbutton ("close"); Border emptyborder = borderfactory.createemptyborder (); CalendarController ccontroller = new CalendarController (); public CalendarViewer () {super (); buildui (); } public void buildui () {buildTopPanel (); BuildCenterPanel (); BuildBottompanel (); setlayout (new Borderlayout ()); Полем Полем Полем Полем Полем Полем } private void buildtoppanel () {. Полем Полем Полем Полем Полем } private void buildCenterPanel () {. Полем Полем Полем Полем Полем } private void buildbottompanel () {. Полем Полем Полем Полем Полем } public jPanel nuphatedAySpanel () {. Полем Полем Полем Полем Полем } public void updatePassedDaySlabel () {. Полем Полем Полем Полем Полем } public void actionperformed (actionEvent e) {. Полем Полем Полем Полем Полем } public static void main (string [] args) {swingUtilities.invokelater (new Runnable () {public void run () {new CalendarViewer ();}}); }}Структура пользовательского интерфейса в основном делится на 3 блока, соответствующие трем панелям на верхней, средней и нижней фигуре.
Обработка прослушивания событий завершена следующим методом.
Обновление пользовательского интерфейса на основе событий выполняется следующими двумя методами.
UpdateAySpanel (); UpdatePassedDaySlabel (); CalendarController.java в основном имеет дело с конкретной бизнес -логикой, в то время как некоторая логика алгоритма календаря используется, которая не связана с конкретным применением, передается на календарный. Calendarmodel.javapublic class calendarmodel {private int daytab [] [] = {{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, 30, 31}, {0, 31, 29, 31, 30, 31, 30, 31, 30, 31, 31}}; Public Boolean IsleApyear (int Year) {return ((Год % 4 == 0 && Год % 100! = 0) || Год % 400 == 0); } public int dayOfyear (int day, int month, int year) {int leap = isleapyear (год)? 1: 0; для (int i = 1; i <месяц; i ++) day+= daytab [leap] [i]; День возвращения; } public int DaysOfMonth (int Month, int Year) {int leap = isleApyear (год)? 1: 0; вернуть Daytab [Leap] [месяц]; } public int dayOfweek (int day, int month, int year) {if (месяц == 1) {месяц = 13; год--; } if (месяц == 2) {месяц = 14; год--; } возврат (день + 2 * месяц + 3 * (месяц + 1) / 5 + год + год / 4 - год / 100 + год / 400) % 7 + 1; }}Создайте двухмерный массив, который представляет количество дней в месяц для легальных годов и не лежащих в годы соответственно. Основные методы:
Формула расчета Ким Ларсон