Эта статья разделяет общие методы работы календарного времени, конкретный контент заключается в следующем
Тест пакета; импорт java.text.simpledateformat; import java.util.calendar; import java.util.date;/** * Общие методы даты и календаря, многие методы даты были снижаются, поэтому календарь является основным * * @author tuzongxun123 */public dateancalendardardartest {public static void123 */public clus Дата непосредственно используйте текущее системное время, результат: Вторник 03 мая 08:25:44 CST 2016 Дата даты = новая дата (); // Многие методы в дату, такие как получение определенного года, месяца, дня и т. Д., И установление определенного года, месяца, дня и т. Д. // Вместо этого рекомендуется использовать различные методы календаря, поэтому записи не делаются // получить миллисекунд указанной даты, которая часто используется для сравнения размеров двух дат. date.getTime (); // Используйте календарь, чтобы получить текущее системное время. Вам необходимо получить объект календаря и преобразовать его в календарный календарь даты = Calendar.getInstance (); // Этот метод эквивалентен времени получения времени в дату, и получить миллисекунды текущего календаря времени. По умолчанию первый день недели - воскресный календарь.getFirstDayOfweek (); // Возвращает год, когда текущая дата календаря является, например, 2016 Calendar.get (1); // Календарь конвертируется на сегодняшний день, результат вывода: вт. Год, месяц и день, результат выхода: понедельник 03 09:31:59 CST 2013 // Связанные обычно используемые перегруженные методы: Calendar.Set (Год, месяц, дата, часовой день, минута); // Calendar.Set (Год, месяц, дата, часовой день, минута, второй); Все параметры являются intcalendar.set (2013, 5, 3); System.out.println (calendar.gettime ()); // Использование календаря для установленного года, результат вывода: пт, июнь 09 09:42:43 CST 2011Calendar.Set (Calendar.year, 2011); System.out.println (Calendar.gettime (); // Set the Calendar и цифры, примечание, что начнется в месяц. 09:45:32 CST 2011Calendar.Set (Calendar.Month, 0); System.out.println (Calendar.getTime ()); // Установите месяц с календарем и собственными константами, обратите внимание, что месяц начинается в 0, представляющий январь, результат выходного дня: № 03 09:47:07. Calendar.february); System.out.println (calendar.getTime ()); // Установить день с календарем и числа 5);System.out.println(calendar.getTime());// Set the hour calendar.set(Calendar.HOUR, 15);System.out.println(calendar.getTime());// Set Calendar time according to the number of milliseconds Calendar.setTimeInMillis(0);// Date to String, output result: 2016-05-03 09:25:29String fordate = datetoString (new Date ()); System.out.println (fordate); // Строка до настоящего времени, результат вывода: Thu 12 Nov. dateToCalendar(strDate);System.out.println(calendar2.get(1));}/*** Convert the specified date type time to a string in the specified format * * @author: tuzongxun* @Title: dateToString* @param @param date* @return void* @date May 3, 2016 9:09:25 AM* @throws*/static String DatetoString (дата дата) {string str = "yyyy-mm-dd hh: mm: ss"; simpledateformat format = new SimpleDateFormat (str); строка dateformat = format.format (date); return dateformat;}/*** @param String* @return void* @date 3 мая 2016 г. 9:16:38 AM* @Throws*/Static Date StringTodate (String String) {string str = "yyyy-mm-dd hh: mm: ss"; simpledateformat format = new SimpleDateformat (str); дата дата = новая дата (); {e.getStackTrace ();} дата возврата;}/*** Преобразовать указанную дату типа даты в тип календаря** @author: tuzongxun* @title: datetocalendar* @param @param date* @return void. Calendar.getInstance (); Calendar.SetTime (Date); возвращаемый календарь;}}Какие еще есть подводные камни?
Где яма:
В проекте, который я сталкивался раньше, я включал функцию: каждый день перемещайте некоторые данные в другую коллекцию баз данных MongoDB, то есть таблицы реляционной базы данных. Это имя коллекции - фиксированное имя плюс год и месяц, на котором находится текущая дата назад.
Эта функция существовала до того, как я вступил в контакт с этим проектом, который является функцией, реализованной моими предыдущими коллегами, и написал задачу Java Timing.
Этой коллега больше нет в нашей компании, но недавно он обнаружил, что у этой функции есть некоторые проблемы. Движение данных не так, как ожидалось. Данные, которые должны были существовать в феврале, появились в январской таблице.
Корень ямы:
Проблемы, связанные с MongoDB, временно поддерживаются мной, и эта проблема, естественно, должна решить мной, поэтому я вынул его код и прочитал его. В результате проблема была обнаружена соответствующими методами календаря.
Чтобы перенести данные двух месяцев назад, вы должны сначала получить дату два месяца назад. Соответствующий код для генерации имени таблицы выглядит следующим образом:
Private String getDataCollectionName () {Календарь календарь = календарь.getInstance (); try {calendar.set (calendar.date, -day); вернуть "Alarm_" + toolutils.datetOformatStrdate (calendar.getTime (), "yyyy_mm"); } catch (Exception e) {logger.error ("{}: преобразование данных не удалось, {}", this.getClass (). getName (), e.getMessage ()); } return null; }Проблема заключается в набором методе календаря, включая время начала и окончания использования данных запросов позже, и то же самое используется Calendar.Set (Calendar.Date, -день);
На первый взгляд, этот метод, по -видимому, устанавливает дату на текущую дату за вычетом указанного количества дней, но на самом деле результат не так, как ожидается, как вы получите дату два месяца назад (день здесь определяет 60, то есть два месяца).
Заполните яму:
Найдя причину, я заменил этот метод и изменил набор для добавления. Что касается параметров внутри, это не было перемещено. Результат доказал, что этот метод может действительно реализовать текущую функцию, и полученный результат является именно ожидаемым результатом.
Конечно, вы также можете немного изменить параметры, не изменяя метод, такой как Calendar.Set (Calendar.Date, Calendar.Get (Calendar.Date) -DAY);
Вышеуказанное посвящено этой статье, и я надеюсь, что для каждого будет полезно овладеть общими методами работы календарного времени.