1. Обзор дат в Java <Br /> Date - это очень сложный элемент контента в Java. Для даты в различных языковых и страновых средах, интернационализации дат, конверсия между датами и временем, добавление и вычитание дат и формат дисплея дат являются очень сложными проблемами.
На Java дата работы в основном включает в себя следующие классы:
1. java.util.date
Дата класса представляет собой конкретный момент, точный для миллисекундов. Начиная с JDK 1.1, класс календаря должен использоваться для реализации конверсии между полями даты и времени, а класс DateFormat должен использоваться для форматирования и анализа строк дат. Метод в дату интерпретации дат как год, месяц, день, час, минута и вторые значения заброшены.
2. java.text.dateformat (Abstract Class)
DateFormat-это абстрактный класс подклассов форматирования даты/времени, которые форматируют и анализируют даты или время независимым от языка. Подклассы даты/форматирования времени (например, SimpleDateFormat) разрешают форматирование (т.е. дата-> текст), анализ (Text-> Date) и стандартизация. Обознайте дату как объект даты, или как количество миллисекундов, начиная с момента GMT (GMT) 1970, 1 января, 00:00:00.
3. java.text.simpledateformat (DateFormat Direct Subclass)
SimpleDateFormat-это конкретный класс, который форматирует и анализирует даты, связанным с локалом. Это позволяет форматировать (дата-> текст), анализ (текст-> дата) и нормализацию.
SimpleDateFormat позволяет выбрать любой режим формата даты, определяемый пользователем. Тем не менее, все еще рекомендуется использовать GetTimeInstance, GetDateInstance или GetDateTimeInstance в DateFormat для создания нового форматера даты.
4. java.util.calendar (абстрактный класс)
Класс календаря - это абстрактный класс, который предоставляет некоторые методы для преобразования определенного момента в набор календарных полей, таких как год, месяц, day_of_month, час и т. Д., И предоставляет некоторые методы для манипулирования полей календаря, таких как получение даты следующей недели. Мгновенный может быть выражен в виде миллисекундного значения, которое является смещением от эпохи (то есть, 00: 00: 00.000, GMT, 1 января 1970 года, GMT).
Как и другие классы, чувствительные к локалу, календарь обеспечивает метод класса, чтобы получить общий объект такого типа. Метод GetInstance календаря возвращает объект календаря, поля календаря которых были инициализированы в текущую дату и время.
5. java.util.gregoriancalendar (прямой подкласс календаря)
GregorianCalendar - это конкретный подкласс календаря, который обеспечивает стандартную календарную систему, используемую большинством стран мира.
GregorianCalendar - это гибридный календарь, который поддерживает как джулианские, так и григорианские календарные системы при поддержке единого разрыва, что по умолчанию соответствует григорианской дате, когда был основан григорианский календарь (некоторые страны были основаны 15 октября 1582 года и позже в других). Дата начала может быть изменена вызывающим абонент, вызовов SetGregorIanChange ().
2. Использование java.util.date
1. Введение в API of java.util.date
Класс java.util.date представляет собой определенный момент, точный до миллисекундов. Есть много методов, но многие устарели и не рекомендуются. Следующие списки только методы, которые не устарели:
Сводка методов строительства
-----------------------
Дата()
Назначьте объект даты и инициализируйте этот объект с текущим временем, чтобы указать время его распределения (точное до миллисекунды).
Дата (долгое время)
Назначьте объект даты и инициализируйте этот объект, чтобы представлять указанное количество миллисекундов со времен стандартного контрольного времени (называемое «эпоха», то есть 00:00:00 по Гринвичу 1 января 1970 года).
Сводка метода
-----------------------
логическое после (дата, когда)
Проверяет, является ли эта дата после указанной даты.
логический до (дата, когда)
Проверяет, будет ли эта дата до указанной даты.
Объектный клон ()
Возвращает копию этого объекта.
int compareto (date eresedate)
Сравните порядок двух дат.
логическое равное (объект obj)
Сравните равенство двух дат.
долгое время ()
Возвращает количество миллисекундов, представленных этой объектом даты с 1 января 1970 года 00:00:00 по Гринвичу.
int hashcode ()
Возвращает значения кода хэша этого объекта.
void settime (давно)
Установите этот объект даты, чтобы представить момент времени во времени Milliseconds после 00:00:00 по Гринвичу 1 января 1970 года.
String toString ()
Преобразовать эту дату объект в строку следующей формы: Dow Mon DD HH: MM: SS zzz yyyy Где:
Доу - это один день недели (солнце, пн, вт, ср, чт, пт, сб).
Мон - это месяц (январь, февраль, март, апрель, май, июнь, июль, август, сентябрь, октябрь, ноябрь, дек).
DD-день в январе (с 01 по 31), отображаемый как двухзначный десятичный номер.
HH-это час дня (от 00 до 23), отображаемый в виде двухзначного десятичного числа.
MM-это протокол (от 00 до 59) в час и отображается в виде двухзначного десятичного числа.
SS-это количество секунд (от 00 до 61) за минуту, отображаемое как двухзначное десятичное число.
Zzz - часовой пояс (и отражает время сэкономить летнее время). Стандартная аббревиатура часового пояса включает аббревиатуру часового пояса, расположенную методом Parse. Если информация о часовом поясе не предоставлена, Zzz пуст, то есть никаких символов не включена вообще.
Yyyy-это год, отображаемый в виде 4-значного десятичного числа.
Вот исчерпывающий пример класса даты:
public Class Testdate {public static void main (string [] args) {testdate testdate = new TestDate (); testdate.getSystemCurrentTime (); testdate.getCurrentDate (); } / *** Получите текущее системное время* System.currentTimeMiMillis () Возвращает текущее системное время, и результат начинается в 0:00:00 1 января 1970 года. Количество миллисекундов, прошедших до выполнения программы и получения системного времени* 1 секунд = 1000 миллисекунд* / public void getSistemcurrentTime () {Система. время---"); System.out.println (System.CurrentTimeMillis ()); } public void getCurrentDate () {System.out.println ("--- Получите текущее время системы ---"); // Создать и инициализировать дату (начальное значение - текущая дата) Дата Дата = Новая дата (); System.out.println («Текущая дата is =» + date.tostring ()); System.out.println («Количество миллисекундов, испытываемого с 1 января 1970 года =» + date.gettime ()); }} 2. Использование Java.Text.Dateformat Abstract Class
DateFormat-это абстрактный класс подклассов форматирования даты/времени, которые форматируют и анализируют даты или время независимым от языка. Подклассы даты/форматирования времени (например, SimpleDateFormat) разрешают форматирование (т.е. дата-> текст), анализ (Text-> Date) и стандартизация. Обознайте дату как объект даты, или как количество миллисекундов, начиная с момента GMT (GMT) 1970, 1 января, 00:00:00.
DateFormat предоставляет ряд методов класса для получения формы даты/времени по умолчанию на основе по умолчанию или данному локали и нескольким стилям форматирования. Стили формата включают в себя полный, длинный, средний и короткий. Более подробная информация и примеры использования этих стилей приведены в описании метода.
DateFormat помогает форматировать и анализировать даты для любого места. В течение нескольких месяцев, недель и даже календарных форматов (лунный и солнечный календарь) код может быть совершенно не имеет отношения к местным соглашениям.
Чтобы отформатировать дату в текущей локале, используйте статический фабричный метод:
myString = dateFormat.getDateInstance (). Формат (mydate);
Если вы форматируете несколько дат, более эффективно получить формат и использовать его несколько раз, чтобы система не должна получать информацию о языке окружающей среды и национальных соглашениях несколько раз.
DateFormat df = dateFormat.getDateInstance (); for (int i = 0; i <mydate.length; ++ i) {output.println (df.format (mydate [i]) +";"); }
Чтобы отформатировать даты разных локалов, укажите его в вызове GetDateInstance ().
DateFormat df = dateFormat.getDateInstance (dateformat.long, locale.france);
DateFormat также может использоваться для анализа.
mydate = df.parse (myString);
Используйте GetDateInstance, чтобы получить стандартный формат даты для этой страны. Некоторые другие статические фабричные методы также предоставляются. Используйте Get TimeInstance, чтобы получить формат времени для этой страны. Используйте GetDateTimeInstance, чтобы получить форматы даты и времени. Различные варианты могут быть переданы в эти заводские методы для контроля длины результата (от короткого до среднего до длинного до полного). Точный результат зависит от локали, но обычно:
Короткий - это полное число, например, 12.13.52 или 15:30
Среда длиннее, например, 12 января 1952 года
Лонг длиннее, например, 12 января 1952 года или 15:30:32
Полно полностью указан, например, вторник, 12 апреля 1952 г. н.э. или 15:30:42 по тихоокеанскому времени.
Если хотите, вы также можете установить часовой пояс в формате. Если вы хотите навязать больше контроля на форматирование или анализ (или предоставить пользователю больше контроля), вы можете попробовать отменить дату, полученную из заводского метода в SimpleDateFormat. Это работает для большинства стран; Просто не забудьте положить его в блок Try в случае специальных форматов.
Вы также можете использовать метод анализа и форматирования с пропорциональной и полевой точкой для анализа частей строкости шаг за шагом. Выровняйте любое конкретное поле или выясните, где выбирается строка на экране.
DateFormat не синхронно. Рекомендуется создавать независимые экземпляры формата для каждого потока. Если несколько потоков получают доступ к формату одновременно, он должен оставаться внешне синхронизированным.
3. Использование java.text.simpledateformat (DateFormat Direct Subclass)
SimpleDateFormat-это конкретный класс, который форматирует и анализирует даты, связанным с локалом. Это позволяет форматировать (дата-> текст), анализ (текст-> дата) и нормализацию.
SimpleDateFormat позволяет выбрать любой режим формата даты, определяемый пользователем. Тем не менее, все еще рекомендуется использовать GetTimeInstance, GetDateInstance или GetDateTimeInstance в DateFormat для создания нового форматера даты. Каждый такой метод класса может вернуть форму даты/времени, инициализированного в режиме формата по умолчанию. Паттерн формата может быть изменен с использованием метода ApplyPattern по мере необходимости. Для получения дополнительной информации об использовании этих методов см. DateFormat.
Режим даты и времени
Формат даты и времени указывается по строке даты и схемы времени. В строках даты и временных рисунков некватурные буквы «A» to 'Z' и 'A' to 'z' интерпретируются как буквы с шаблонами для представления элементов даты или строки времени. Текст может быть заключен в отдельные кавычки ('), чтобы избежать объяснения. "''" означает отдельные цитаты. Все остальные символы не интерпретируются; Они просто копируются в выходную строку при отформатировании или соответствуют входной строке при анализе.
Для получения дополнительной справочной информации вы можете просмотреть документацию JDK API. Вот исчерпывающий пример:
открытый класс testDateFormat {public static void main (string [] args) выбрасывает ParseException {testDateFormat tdf = new TestDateFormat (); tdf.dateformat (); } /*** Проверьте класс SimpleDateFormat* @Throws parseException* /public void dateFormat () throws parseexception {// Создание даты даты = новая дата (); // Создать разные форматы даты dateformat df1 = dateformat.getinstance (); DateFormat df2 = new SimpleDateFormat ("yyyy-mm-01 HH: MM: SS EE"); DateFormat df3 = dateFormat.getDateInstance (dateformat.full, locale.china); // Создать формат даты с указанной длиной указанной страны. Длина отличается, и отображаемая целостность даты также отличается. DateFormat df4 = new SimpleDateFormat ("Yyyyy Year Mm Month DD Day HH Hour Mm Minute Ss Seconds ee", locale.china); DateFormat df5 = new SimpleDateFormat ("yyyy-mm-dd HH: MM: ss eeeeee", locale.us); DateFormat df6 = new SimpleDateFormat ("yyyy-mm-dd"); // даты вывода в разных форматах System.out.println ("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- df3.format (date)); df5.format (date); Дата DATE2 = DF2.PARSE ("2016-01-24 02:51:07 Воскресенье"); Дата даты 3 = df3.parse ("2016-01-24"); Дата Date4 = DF4.Parse ("2016-01-24 02:51:18 воскресенье"); Дата дата 6 = df6.parse ("2016-01-24"); System.out.println("------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- System.out.println(date1); System.out.println (Date2); 4. java.util.calendar (абстрактный класс)
java.util.calendar - это абстрактный класс, абстрактное представление системного времени. Он предоставляет некоторые методы для преобразования определенного момента в набор календарных полей, таких как год, месяц, day_of_month, час и т. Д., И предоставляет некоторые методы для манипулирования полей календаря (например, получение даты следующей недели). Мгновенный может быть выражен в виде миллисекундного значения, которое является смещением от эпохи (то есть, 00: 00: 00.000, GMT, 1 января 1970 года, GMT).
Как и другие классы, чувствительные к локалу, календарь обеспечивает метод класса, чтобы получить общий объект такого типа. Метод GetInstance календаря возвращает объект календаря, поля календаря которых были инициализированы в текущую дату и время.
Пример календаря является абстрактным представлением системного времени. Из случая календаря вы можете знать такую информацию, как год, месяц, день, неделя, месяц и месяц. В календарном классе есть статический метод (int x). С помощью этого метода вы можете получить некоторые значения (год, месяц, день, неделя, месяц и т. Д.) Информацию о соответствующем случае. Параметр x - это значение доходности, определяемое в календаре.
Некоторые ловушки в календаре могут легко упасть:
1. Неделя календаря начинается в воскресенье, с постоянной стоимостью 0.
2. Месяц календаря начинается с января, с постоянной стоимостью 0.
3. Первый день календаря каждого месяца - 1.
5. java.util.gregoriancalendar (прямой подкласс календаря)
GregorianCalendar - это конкретный подкласс календаря, который обеспечивает стандартную календарную систему, используемую большинством стран мира. Используется в сочетании с классом абстрактного календаря.
Вот исчерпывающий пример, чтобы увидеть использование класса календаря:
открытый класс testcalendar {public static void main (string [] args) выбрасывает parseexception {testcalendar testcalendar = new TestCalendar (); testcalendar.testcalendar (); testcalendar.testcalendar2 (); } public void testCalendar () {// Как создать календарный календарный календарь now1 = calendar.getInstance (); Календарь now2 = new gregoriancalendar (); Календарь сейчас3 = новый GregorianCalendar (2016, 01, 24); Календарь сейчас4 = новый GregorianCalendar (2016, 01, 24, 15, 55); // тропа: месяц календаря составляет 0 ~ 11 календаря Now5 = New GregorianCalendar (2016, 01, 24, 15, 55, 44); Календарь сейчас 6 = новый gregoriancalendar (locale.us); Календарь now7 = new gregoriancalendar (timezone.gettimezone ("Gmt-8: 00")); // Установить календарь now2.settime (new Date ()); System.out.println (Now2); now2.setTimeInmillis (new Date (). getTime ()); System.out.println (Now2); // Определите китайский формат вывода даты и выводит дату SimpleDateFormat df = new SimpleDateFormat («Yyyyy Year Mm Month DD Day HH HOM MM минутная секунды E», locale.china); System.out.println («Получить китайский форматированный выход даты:» + df.format (now5.gettime ())); System.out.println (); System.out.println ("----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- SYSTEM nows.get (calendar.month); nows.get (calendar.second); System.out.println ("--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- «Март», «апрель», «май», «июнь», «июль», «Август», «Сентябрь», «Октябрь», «Ноябрь», «Декабрь»}; System.out.println ("Now5 Moday Object:" + месяцы [now5.get (calendar.month)]); } public void testCalendar2 () бросает ParseException {// Получить максимальное количество дней в календаре текущего месяца cal = calendar.getInstance (); int maxday = cal.getactualmaximum (calendar.day_of_month); int mindday = cal.getactualminimum (calendar.day_of_month); System.out.println (maxday); // Принять последний день месяца DateFormat Formatter3 = new SimpleDateFormat ("yyyy-mm-"+maxday); System.out.println (format3.format (cal.gettime ())); // Принять последний день месяца DateFormat Formatter4 = new SimpleDateFormat ("yyyy-mm-"+minday); System.out.println (formatter4.format (cal.gettime ())); // найти количество дней между двумя датами java.text.simpledateformat format = new java.text.simpledateformat ("yyyy-mm-dd"); java.util.date begindate = format.parse ("2007-12-24"); java.util.date enddate = format.parse ("2007-12-25"); длинный день = (enddate.gettime ()-begindate.gettime ())/(24*60*60*1000); System.out.println ("количество дней помимо ="+day); // Дата год назад java.text.format formatter5 = new java.text.simpledateformat ("yyyy-mm-dd"); java.util.date Todaydate = new java.util.date (); long beforeTime = (сегодняшний день.gettime ()/1000) -60*60*24*365; Todaydate.settime (beforetime*1000); String beforedate = formatter5.format (сегодня); System.out.println (beforedate); Календарь календарь = календарь.getinstance (); Calendar.add (Calendar.year, -1); System.out.println (formatter5.format (calendar.gettime ())); // понедельник и воскресенье текущей недели SimpleDateFormat DateFormat = new SimpleDateFormat ("yyyyMmdd"); Gregoriancalendar gregoriancalendar = new gregoriancalendar (); int dayinweek = gregoriancalendar.get (calendar.day_of_week); int offset = 0; if (dayinweek == 1) {// воскресенье смещение = 6; } else {// с понедельника по субботу offset = dayinweek - 2; } gregoriancalendar.add (gregoriancalendar.day_of_month, -offset); String sday = dateFormat.format (gregorianCalendar.getTime ()); gregoriancalendar.add (gregoriancalendar.day_of_month, 6); String eday = dateFormat.format (gregorianCalendar.getTime ()); System.out.println («Понедельник этой недели:» + sday); System.out.println («Воскресенье этой недели:» + eday); }}3. Резюме
В Java часто есть пять аспектов дат:
1. Дата творения
2. Отображение формата даты
3. Дата преобразования (в основном взаимное преобразование со строками)
4. Получить даты среднего возраста, месяца, дня, часа, минуты, второй, недели, месяца и т. Д.
5. Сравнение размера даты и добавления и вычитания дат.
Выше приведено метод использования Java и время, обобщенный для вас. Я надеюсь, что это будет полезно для вашего обучения.