Во время развития Java я неизбежно запутался с типом даты. Я собирался обобщить операции, связанные с датой, которые часто использовали проект. JDK версия 1.7. Если это поможет вам сэкономить несколько минут, чтобы встать и двигаться и сделать чашку кофе, это было бы здорово. Хе -хе. Конечно, я предоставляю только жизнеспособные решения и не гарантированно будет лучшим практикой, и обсуждения приветствуются.
1. Значение даты
В эпоху старого JDK было много кодов, которые использовали класс java.util.date с точки зрения значений даты. Однако, поскольку класс даты не удобен для достижения интернационализации, рекомендуется использовать класс java.util.calendar для обработки времени и дат, начиная с JDK1.1. Я не буду представить операции даты класса здесь. Давайте перейдем к теме и как использовать класс календаря, чтобы получить текущую дату и время.
Поскольку метод конструктора календаря изменяется защищенным, мы создадим объект календаря с помощью метода GetInstance, представленного в API.
// Существует несколько перегруженных методов для создания календаря календаря теперь = calendar.getInstance (); // по умолчанию // указать часовой пояс и область, или вы можете ввести только один из календаря параметров сейчас = Calendar.getInstance (Timezone, Locale);
Затем мы можем получить текущие различные параметры времени через объект.
int Год = теперь.get (calendar.year); //, текущий год int месяц = now.get (calendar.month) +; //, текущий месяц, пожалуйста, добавьте int day = now.get (calendar.date); //, дата текущего дня = дата = now.gettime (); // напрямую получить дату типа
Чтобы получить другие типы данных времени, вам нужно только изменить параметры в nows.get (). В дополнение к трем вышеуказанным параметрам, другие часто используемые параметры следующие:
• Calendar.day_of_month: дата, такой же, как Calendar.date
• Календарь. Черт: 12 часов
• Calendar.hour_of_day: количество часов в 24-часовой системе
• Календарь. Минут: минута
• Календарь. Сторонний: секунды
• Calendar.day_of_week: Weekly
В дополнение к получению данных времени, мы также можем установить различные параметры времени через объект календаря.
// Установить только значение определенного поля // public final void set (int field, int value) now.set (calendar.year,); // Установлен Год, месяц, день, час, месяц, день, час, минута, второй // Общественный окончательный набор void (int Year, Month Month, int Date [, int hout hay, int miname, int second]) now.set (,, [,,,,]); // Зарегистрируйтесь дату даты типа непосредственно // Общедоступное окончательное время установки (дата даты) сейчас.set (date);
Уведомление:
• Когда параметр времени установлен, другие соответствующие значения будут пересматриваться. Например, когда вы установите дату на 11 -е место, соответствующие изменения будут внесены на неделю.
• Месяц, который вы получаете, плюс 1. Фактический месяц - один.
• В классе календаря воскресенье - 1, понедельник - 2, и так далее.
2. Дата конверсия
Поговорив о дате, давайте поговорим о конверсии даты. Преобразование, как правило, является взаимным преобразованием между датой даты и строкой строкового типа. В основном я использую java.text.simpledateformat для операции преобразования.
SimpleDateFormat SDF = new SimpleDateFormat ("yyyy-mm-dd HH: MM: SS"); try {// дата календаря с календарями = calendar.getInstance (); Дата даты = календарь.gettime (); String DateStringParse = sdf.format (date); // строка на сегодняшний день строка datestring = "- ::"; DateParse = sdf.parse (datestring); } catch (parseexception e) {e.printstacktrace (); }Уведомление:
• Формат преобразования должен быть указан при создании объекта SimpleDateFormat.
• Формат конверсии чувствителен к случаям, Yyyy представляет год, MM представляет месяц, DD представляет дату, HH представляет час в 2011 году, HH представляет час в 1011, MM представляет собой минуту, а SS представляет секунды.
3. Дата сложения и вычитания
Вообще говоря, мы сделаем две дополнения и операции вычитания в даты:
• На основании даты рассчитайте даты до/после, до/после или до/после или после и после других единиц времени.
// Рассчитайте календарь сейчас = Calendar.getInstance (); Теперь. ADD (Calendar.year,); // после года нынешнего времени. Add (Calendar.year, -); // до года текущего времени // Рассчитайте календарный specialdate = calendar.getinstance (); specialdate.settime (date); // Обратите внимание, что значение SpecialDate изменяется на определенную дату specialdate.add (calendar.year,); // после года конкретного времени specialdate.add (calendar.year, -); // до года конкретного времени
Обратите внимание, что используется метод добавления календарного объекта. Вы можете изменить календарь. В любое время для любого поля единиц, чтобы завершить расчет даты в различных единицах времени.
• Рассчитайте интервал между двумя разами, например, сколько дней сейчас существует 1 января 2016 года.
SimpleDateFormat SDF = new SimpleDateFormat ("yyyy-mm-dd HH: MM: SS"); String DateString = "- ::"; Календарь календарь = календарь.getinstance (); long owndate = calendar.gettime (). gettime (); //Date.gettime () получить Millisecond Date try {long specialdate = sdf.parse (datestring) .gettime (); long betweendate = (specialdate - owndate) / ( * * *); // Рассчитайте, сколько дней, разделите его на формулу преобразования миллисекунд в Days System.out.print (Betweendate); } catch (parseexception e) {e.printstacktrace (); } 4. Сравнение даты
Просматривая свой предыдущий код, я обнаружил, что всякий раз, когда я выполняю операцию сравнения даты, я сначала преобразую дату в строку в формате «yyyymmdd», затем преобразую строку в значение, а затем сравниваю размер значения. Ха -ха, это простая операция сравнения, но для написания кода требуется более десятка строк кода, что немного невыносимо. Теперь мы должны поговорить о правильной почте сравнения даты.
Обычно существует два метода для сравнения дат, которые являются общими для java.util.date или java.util.calendar. Одним из них является сравнение с методом до () через ATHE (), а другой - метод сравнения () с помощью метода сравнения ().
SimpleDateFormat sdf = new SimpleDateFormat ("yyyy-mm-dd HH: MM: SS"); String DateString_01 = "2016-01-01 11:11:11"; строка datestring_02 = "2016-01-02 11:11:11"; попробуйте {дата даты_01 = sdf.parse (datestring_01); Date Date_02 = sdf.parse (datestring_02); System.out.println (date_01.fore (date_02)); // true, когда date_01 меньше, чем date_02, когда это правда, в противном случае это false System.out.println (date_02.after (date_01)); // true, когда date_02 больше, чем date_01, это верно, в противном случае это false System.out.println (date_01.compareto (date_02)); // -1, когда date_01 меньше, чем date_02, это -1 System.out.println (date_02.compareto (date_01)); // 1, когда date_02 больше, чем date_01, это 1 System.out.println (date_02.compareto (date_02)); // 0, когда две даты равны, это 0} Catch (parseexception e) {e.printstacktrace ();}Выше приведено полное описание общих операций даты (значение, преобразование, добавление и вычитание, сравнение) в Java, введенных вам в этой статье. Надеюсь, вам понравится.