Код реализации один:
import java.text.simpledateformat; import java.util.calendar; import java.util.date; открытый класс Datetestutil {public static void main (string [] args) выбрасывает исключение {SimpleDateformat sdf = new SommentedateFormat ("yyyyMmdd"); String Str = "20110823"; Дата dt = sdf.parse (str); Календарь rightnow = calendar.getInstance (); rightnow.settime (dt); rightnow.add (calendar.year, -1); // дата минус 1 год rightnow.add (calendar.month, 3); // дата плюс 3 месяца rightnow.add (calendar.day_of_year, 10); // дата плюс плюс 10 дней dt1 = rightnow.gettime (); String rtrs = sdf.format (dt1); System.out.println (rtress); }}Примечание. В методе добавления объекта календаря второй параметр - это положительное число, которое означает «добавить», и отрицательное число, которое означает «вычитание».
Код 2: дата Java добавляет и вычитает количество дней
Тестовый код класса:
импортировать java.text.simpledateformat; импортировать java.util.date; открытый класс datetest {public static void main (string [] arg) {date now = new Date (); addandSubtractdaysbygettime (теперь -5); addandSubtractdaysbygetTime (теперь 5); AddandSubtractdaysbyCalendar (теперь -5); AddandSubtractdaysbyCalendar (теперь, 5); } public Static Date AddandSubtractdaysbygetTime (dateTime/*Дата ожидания*/, int n/*Дни сложения и вычитания*/) {// формат даты SimpleDateFormat df = new SimpleDateFormat ("yyyy-mm-dd"); SimpleDateFormat dd = new SimpleDateFormat ("yyyy-mm-dd HH: MM: SS"); System.out.println (df.format (новая дата (datetime.gettime () + n * 24 * 60 * 60 * 1000L)); //System.out.println(dd.format(new date (datetime.gettime () + n * 24 * 60 * 60 * 1000L))); // Обратите внимание, что вы должны преобразовать в длинный тип здесь, в противном случае переполнение диапазона будет происходить, когда n превышает 25, так что вы не можете получить желаемое значение даты возврата новой даты (dateTime.getTime () + n * 24 * 60 * 60 * 1000L); } public Static Date AddandSubtractdaysbyCalendar (dateTime/*Дата ожидания*/, int n/*Дополнительные и дни вычитания*/) {// формат даты SimpleDateFormat df = new SimpleDateFormat ("yyyy-mm-dd"); SimpleDateFormat dd = new SimpleDateFormat ("yyyy-mm-dd HH: MM: SS"); java.util.calendar calstart = java.util.calendar.getinstance (); calstart.settime (datetime); calstart.add (java.util.calendar.day_of_week, n); System.out.println (df.format (calstart.gettime ())); //System.out.println (dd.format (calstart.gettime ())); return calstart.gettime (); }} Результаты работы:
2014-10-06
2014-10-16
2014-10-06
2014-10-16
Код третий:
Проверьте информацию в Интернете и добавьте несколько классов инструментов о классе даты, который вы суммировали.
пакет com.data.utils; import java.text.simpledateformat; import java.util.calendar; import java.util.date; открытый класс dateformat { / *** Сколько лет уменьшается* / public static dateminusyear (String str) thres exectore {simplateformat sdf = new Systrateformatear (strmymyMym (string str) throhs {{usmedateformat sdf = new SystrateformAtear (»; Дата dt = sdf.parse (str); Календарь rightnow = calendar.getInstance (); rightnow.settime (dt); rightnow.add (calendar.year, -1); // дата минус 1 год дата dt1 = rightnow.gettime (); String rtrs = sdf.format (dt1); вернуть рестораны; } / *** Сколько лет добавить к настоящему времени* / public Static String DateAddeear (String Str) Throws exection {SimpleDateFormat sdf = new SimpleDateFormat ("yyyyMm"); Дата dt = sdf.parse (str); Календарь rightnow = calendar.getInstance (); rightnow.settime (dt); rightnow.add (calendar.year, 1); // дата плюс 1 год dt1 = rightnow.gettime (); String rtrs = sdf.format (dt1); вернуть рестораны; } / *** Сколько месяцев дата уменьшается* / public static String DateminusMonth (String Str) выбрасывает Exception {SimpleDateFormat sdf = new SimpleDateFormat ("yyyyMm"); Дата dt = sdf.parse (str); // генерировать строковый календарь rightnow = calendar.getinstance (); rightnow.settime (dt); // Установить время этого календаря с помощью данной даты. rightnow.add (calendar.month, -1); // Дата минус 1 месяц дата dt1 = rightnow.gettime (); // Возвращает объект даты, представляющую календарное время времени. String rtrts = sdf.format (dt1); // Форматируйте данную дату как строку даты/времени и добавьте результат к данному stringbuffer. вернуть рестораны; } / ** * Сколько месяцев дата добавляет * / public static String dateAddmonth (String Str) выбрасывает Exception {simpleDateFormat sdf = new SimpleDateFormat ("yyyyMm"); Дата dt = sdf.parse (str); Календарь rightnow = calendar.getInstance (); rightnow.settime (dt); rightnow.add (calendar.month, 1); // Добавить 3 месяца к дате // rightnow.add (calendar.day_of_year, 10); // дата плюс 10 дней дата dt1 = rightnow.gettime (); String rtrs = sdf.format (dt1); вернуть рестораны; } / ** * Получить Str в течение первого месяца текущего года и месяца * @param Str * 201505 * @return 201501 * @throhs Exception * / public Static String DateOnemonth (String Str) {str = str.SubString (0, str.length () - 2); str = str + "01"; вернуть Str; } /*** Рассчитайте, сколько месяцев выбранный месяц с января. * @param Str 201509 * @return 9 */ public static intistancemonth (string str) {int i = integer.parseint (str); int j = integer.parseint (dateformat.dateonemonth (str)); System.out.println (i - j); вернуть i - j + 1; } / ** * Получите разницу во времени между двумя разами, точными до миллисекундов * @param str * @return * / public static String Timedifference (Long Start, Long End) {long между = end - start; длинный день = между / (24 * 60 * 60 * 1000); длинный час = (между / (60 * 60 * 1000) - день * 24); длинный мин = ((между / (60 * 1000)) - день * 24 * 60 - час * 60); Long S = (между / 1000 - день * 24 * 60 * 60 - час * 60 - мин * 60); Long MS = (между - день * 24 * 60 * 60 * 1000 - час * 60 * 60 * 60 * 1000 - мин * 60 * 1000 - S * 1000); Строка временного определения = день + "день" + час + "час" + min + "минута" + s + "секунды" + ms + "миллисекунд"; ВЕРТИВАТЬ ВРЕМЯ; }} / ** * Получите время начала 24 часа, одну неделю и один месяц * * @param TimeInterval *: day_time_Interval Week_time_Interval Month_time_Interval * @return "yyyy-mm-dd hh: mm: ss" * / public Static Stringtarttime (int TimeInterval) {Calendar CalendAr.ject-statice-strictratment (int TimeInterval) {Calendar Calendar); SimpleDateFormat SDF = new SimpleDateFormat ("yyyy-mm-dd HH: MM: SS"); if (day_time_interval == TimeInterval) {// Получить 24-часовое время начала cal.set (calendar.hour_of_day, 0); Cal.Set (Calendar.minute, 0); Cal.Set (Calendar.second, 0); String startTime = sdf.format (cal.getTime ()); вернуть начало; } else if (week_time_interval == timeInterval) {int WeekDay = cal.get (calendar.day_of_week) - 1; cal.add (calendar.date, -weekday); cal.set (calendar.hour_of_day, 0); Cal.Set (Calendar.minute, 0); Cal.Set (Calendar.second, 0); String startTime = sdf.format (cal.getTime ()); вернуть начало; } else if (month_time_interval == timeInterval) {int dayofmonthmin = cal.getActualMinimum (calendar.day_of_month); // c.add (calendar.date, -dayofmonth); cal.set (calendar.date, dayofmonthmin); cal.set (calendar.hour_of_day, 0); Cal.Set (Calendar.minute, 0); Cal.Set (Calendar.second, 0); String startTime = sdf.format (cal.getTime ()); вернуть начало; } return null; } / ** * Получите время окончания 24 часа, одну неделю и один месяц * * @param timeInterval *: day_time_interval Week_time_Interval Month_time_Interval * @return "yyyy-mm-dd hh: mm: ss" * / public static Stringmenttime (int TimeInterval) {Calendar Calendar. GetStane (); cal.settimezone (timezone.gettimezone ("Gmt+8")); SimpleDateFormat SDF = new SimpleDateFormat ("yyyy-mm-dd HH: MM: SS"); if (day_time_interval == timeInterval) {cal.set (calendar.hour_of_day, 23); Cal.Set (12, 59); Cal.Set (13, 59); Длиная дата = cal.getTimeInmillis (); String endtime = sdf.format (новая дата (дата)); вернуть окончание; } else if (week_time_interval == timeInterval) {int WeekDay = cal.get (calendar.day_of_week) - 1; cal.add (calendar.date, -weekday); Cal.Add (Calendar.Date, 6); cal.set (calendar.hour_of_day, 23); Cal.Set (12, 59); Cal.Set (13, 59); Длиная дата = cal.getTimeInmillis (); String endtime = sdf.format (новая дата (дата)); вернуть окончание; } else if (month_time_interval == timeInterval) {int dayofmonthmax = cal.getActualMaximum (calendar.day_of_month); cal.set (calendar.date, dayofmonthmax); cal.set (calendar.hour_of_day, 23); Cal.Set (Calendar.minute, 59); Cal.Set (Calendar.second, 59); String endtime = sdf.format (cal.gettime ()); вернуть окончание; } return null; } /*** Определите, находится ли DATESTR между началом и конец. Как начало, так и конец может быть null yyyymmddhmmmss или yyyymmdd format * * @author you.xu * @date 19 августа 2015 в 3:11:46 * @param datestr * @param start * @param end * @return */ public boolean checkdateval (строка datestr, string ind) Дата даты = null; Дата startDate = null; Date EndDate = NULL; SimpleDateFormat sdf = null; // Судья дата формат if (14 == datestr.length ()) {sdf = new SimpleDateFormat ("yyyMmddhhmmss"); } else if (8 == dateStr.length ()) {sdf = new SimpleDateFormat ("yyyyMmdd"); } else вернуть false; try {// изменить дату даты судьи дата = sdf.parse (datestr); } catch (parseException e) {log.error (e, e); } if ((start == null) && (end! = null)) {try {enddate = sdf.parse (end); } catch (parseexception ex1) {log.error (ex1, ex1); } if ((date! = null) && (enddate! = null)) // Проверка параметров для {if (date.compareto (enddate) <= 0) isdateright = true; }} else if ((start! = null) && (end == null)) {try {startDate = sdf.parse (start); } catch (parseexception ex1) {log.error (ex1, ex1); } if ((date! = null) && (startDate! = null)) {if (date.compareto (startDate)> = 0) isDateright = true; }} else if ((start! = null) && (end! = null)) {try {startDate = sdf.parse (start); enddate = sdf.parse (end); } catch (parseexception ex2) {System.out.println (ex2.toString ()); } if ((startDate! = null) && (date! = null) && (enddate! = null)) {if (date.com ppareto (startDate)> = 0) && (date.compareto (endDate) <= 0)) isDateright = true; }} return isdateright; } / ** * Чтобы определить, находится ли DateStR между началом и конец, как начало, так и в конце может быть в NULL Long Format * * @author you.xu * @date 19 августа 2015 в 3:12:35 * @param datestr * @param start * @param end * @return * / public boolean checkdatev (строка datestr, string end) долгой дату = -1; долго от дачи = -1; длинный тодат = -1; date = java.lang.long.parselong (datestr); if ((start == null) && (end == null)) {isdateright = true; } else if ((start == null) && (end! = null)) {try {todate = java.lang.long.parselong (end); } catch (numberFormateXception nfe) {log.error (nfe, nfe); } if (date <= todate) {isdateright = true; }} else if ((start! = null) && (end == null)) {try {fromDate = java.lang.long.parselong (start); } catch (numberFormateXception nfe) {log.error (nfe, nfe); } if (date> = fromDate) {isDateright = true; }} else if ((start! = null) && (end! = null)) {try {todate = java.lang.long.parselong (end); fromDate = java.lang.long.parselong (start); } catch (numberFormateXception nfe) {log.error (nfe, nfe); } if ((date <= todate) && (date> = fromDate)) {isDateright = true; }} return isdateright; }Они используются до сих пор, и вы можете добавить их в любое время. Есть простые и удобные инструменты времени. Я надеюсь поучиться с вами, и я указам на них в комментариях. Спасибо! ! !