спасибо пиюш, и что это за формат даты, мне нужно сохранить это в mysql
киран
Тип данных mysql для даты - DATETIME.
kiran 05
это правильный формат даты, возвращаемый
калом
1
Код Java для добавления месяца к текущей дате в желаемом формате будет таким, как показано ниже. Теперь вам нужно преобразовать эту строку в дату и вставить в базу данных MYSql. Обратите внимание, что вы можете изменить формат даты в конструкторе DateFormat или позже в запросе MYSQL с помощью функции STR_TO_DATE (str, format). DateFormat formatter = new SimpleDateFormat ("гггг-ММ-дд чч: мм: сс"); Календарь сейчас = Calendar.getInstance (); now.add (Calendar.MONTH, 1); Строка dateString = formatter.format (now.getTime ());
Java.time каркас встроен в Java 8 и более поздних версий. Эти классы вытеснять старые классы хлопотно даты и времени , такие как java.util.Date, .Calendar, и java.text.SimpleDateFormat. Команда Joda-Time также советует перейти на java.time.
Чтобы узнать больше, см. Oracle Tutorial . И поищите в Stack Overflow множество примеров и объяснений.
Большая часть функциональности java.time перенесена на Java 6 и 7 в ThreeTen-Backport и дополнительно адаптирована для Android в ThreeTenABP .
Только дата
Если вам нужна только дата, используйте LocalDateкласс.
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );
today.toString (): 23 января 2017 г.
Добавьте месяц.
LocalDate oneMonthLater = today.plusMonths( 1 );
oneMonthLater.toString (): 23 февраля 2017 г.
Дата-время
Возможно, вы хотите указать время дня вместе с датой.
Добавление месяца означает определение дат. А определение дат означает применение часового пояса. В любой момент дата меняется по всему миру, новый день наступает раньше на востоке. Так что Instantустановите часовой пояс.
Возможно, вы захотите скорректировать время дня по первому моменту дня при выполнении такого рода вычислений. Этот первый момент не всегда, 00:00:00.0поэтому позвольте java.time определять время дня.
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является испытательной площадкой для возможных будущих дополнений к java.time. Вы можете найти некоторые полезные классы здесь , такие как Interval, YearWeek, YearQuarter, и более .
Джода-Тайм
Обновление: проект Joda-Time теперь находится в режиме обслуживания. Его команда советует перейти на классы java.time. Я оставляю этот раздел нетронутым для потомков.
Библиотека Joda-Time предлагает способ разумного добавления месяцев.
Не могли бы вы объяснить, что делает ваш код, а не просто большой блок кода?
Necoras 05
Мой код более строгий и более общий. Более ограниченный, поскольку он обрабатывает только дату (в виде строки) с фиксированным форматом «ММ / дд / гггг». Общий, потому что он позволяет вам добавлять любой положительный месяц в указанную вами дату.
DJAM Silvère Gatien
Итак, если вам нужен менее строгий код, который принимает любой java.util.Date и отображает другой java.util.Date после добавления месяца, см. Ниже: Calendar cal = Calendar.getInstance (); cal.setTime (дата); cal.add (Calendar.MONTH, 1); cal.getTime ();
DJAM Silvère Gatien
3
вы можете использовать класс DateUtils в пакете org.apache.commons.lang3.time
Если вам нужна однострочная формула (например, для формулы Jasper Reports) и вы не возражаете, если корректировка составляет не ровно один месяц (например, «30 дней» достаточно):
Не забудьте добавить суффикс «L» к числу, иначе if будет рассматриваться как простое int и будет переполняться до отрицательного числа!
Николя Буке,
1
Вы можете использовать это так:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String d = "2000-01-30";
Date date= new Date(sdf.parse(d).getTime());
date.setMonth(date.getMonth() + 1);
* @deprecated Начиная с JDK версии 1.1, * заменен на <code> Calendar.set (Calendar.MONTH, int month) </code>. Как говорит Date.java.
Джаспер Ланкхорст
1
Чтобы найти день через месяц, необходимо посмотреть, какой сегодня день месяца.
Итак, если день первый день месяца, запустите следующий код
Calendar calendar = Calendar.getInstance();
Calendar calFebruary = Calendar.getInstance();
calFebruary.set(Calendar.MONTH, Calendar.FEBRUARY);
if (calendar.get(Calendar.DAY_OF_MONTH) == 1) {// if first day of month
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DAY_OF_MONTH));
Date nextMonthFirstDay = calendar.getTime();
System.out.println(nextMonthFirstDay);
}
если это последний день месяца, запустите следующие коды.
elseif ((calendar.getActualMaximum(Calendar.DAY_OF_MONTH) == calendar.get(Calendar.DAY_OF_MONTH))) {// if last day of month
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
Date nextMonthLastDay = calendar.getTime();
System.out.println(nextMonthLastDay);
}
если день в феврале, запустите следующий код
elseif (calendar.get(Calendar.MONTH) == Calendar.JANUARY
&& calendar.get(Calendar.DAY_OF_MONTH) > calFebruary.getActualMaximum(Calendar.DAY_OF_MONTH)) {// control of february
calendar.add(Calendar.MONTH, 1);
calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
Date nextMonthLastDay = calendar.getTime();
System.out.println(nextMonthLastDay);
}
следующие коды используются для других случаев.
else { // any day
calendar.add(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
Date theNextDate = calendar.getTime();
System.out.println(theNextDate);
}
Прежде всего, ответ неверен на основе OP. Во-вторых, на OP был дан ответ 8 (!) Лет назад, и в-третьих, есть более эффективные способы форматирования вывода даты, чем использование множества строк.
Ответы:
Calendar cal = Calendar.getInstance(); cal.add(Calendar.MONTH, 1);
источник
Java 8
LocalDate futureDate = LocalDate.now().plusMonths(1);
источник
Вы можете использовать вспомогательный служебный класс Apache Commons lang DateUtils.
Date newDate = DateUtils.addMonths(new Date(), 1);
Вы можете скачать банку commons lang по адресу http://commons.apache.org/proper/commons-lang/
источник
tl; dr
Пример:
LocalDate.now( ) .plusMonths( 1 );
Лучше указать часовой пояс.
LocalDate.now( ZoneId.of( "America/Montreal" ) .plusMonths( 1 );
java.time
Java.time каркас встроен в Java 8 и более поздних версий. Эти классы вытеснять старые классы хлопотно даты и времени , такие как
java.util.Date
,.Calendar
, иjava.text.SimpleDateFormat
. Команда Joda-Time также советует перейти на java.time.Чтобы узнать больше, см. Oracle Tutorial . И поищите в Stack Overflow множество примеров и объяснений.
Большая часть функциональности java.time перенесена на Java 6 и 7 в ThreeTen-Backport и дополнительно адаптирована для Android в ThreeTenABP .
Только дата
Если вам нужна только дата, используйте
LocalDate
класс.ZoneId z = ZoneId.of( "America/Montreal" ); LocalDate today = LocalDate.now( z );
Добавьте месяц.
LocalDate oneMonthLater = today.plusMonths( 1 );
Дата-время
Возможно, вы хотите указать время дня вместе с датой.
Сначала получите текущий момент в формате UTC с разрешением наносекунды .
Добавление месяца означает определение дат. А определение дат означает применение часового пояса. В любой момент дата меняется по всему миру, новый день наступает раньше на востоке. Так что
Instant
установите часовой пояс.ZoneId zoneId = ZoneId.of( "America/Montreal" ); ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
Теперь добавьте свой месяц. Пусть java.time обрабатывает високосный месяц и тот факт, что месяцы различаются по длине.
ZonedDateTime zdtMonthLater = zdt.plusMonths( 1 );
Возможно, вы захотите скорректировать время дня по первому моменту дня при выполнении такого рода вычислений. Этот первый момент не всегда,
00:00:00.0
поэтому позвольте java.time определять время дня.О java.time
Java.time каркас встроен в Java 8 и более поздних версий. Эти классы вытеснять неприятные старые устаревшие классы даты и времени , такие как
java.util.Date
,Calendar
, иSimpleDateFormat
.Проект Joda-Time , находящийся сейчас в режиме обслуживания , рекомендует перейти на классы java.time .
Чтобы узнать больше, см. Oracle Tutorial . И поищите в Stack Overflow множество примеров и объяснений. Спецификация - JSR 310 .
Где взять классы java.time?
Проект ThreeTen-Extra расширяет java.time дополнительными классами. Этот проект является испытательной площадкой для возможных будущих дополнений к java.time. Вы можете найти некоторые полезные классы здесь , такие как
Interval
,YearWeek
,YearQuarter
, и более .Джода-Тайм
Обновление: проект Joda-Time теперь находится в режиме обслуживания. Его команда советует перейти на классы java.time. Я оставляю этот раздел нетронутым для потомков.
Библиотека Joda-Time предлагает способ разумного добавления месяцев.
DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" ); DateTime now = DateTime.now( timeZone ); DateTime nextMonth = now.plusMonths( 1 );
Возможно, вы захотите сосредоточиться на дне, приспособив время дня к первому моменту дня.
DateTime nextMonth = now.plusMonths( 1 ).withTimeAtStartOfDay();
источник
Calendar cal = Calendar.getInstance(); cal.add(Calendar.MONTH, 1); java.util.Date dt = cal.getTime();
источник
(адаптировано из Дуггу)
public static Date addOneMonth(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.MONTH, 1); return cal.getTime(); }
источник
Используйте calander и попробуйте этот код.
Calendar calendar = Calendar.getInstance(); calendar.add(Calendar.MONTH, 1); calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); Date nextMonthFirstDay = calendar.getTime(); calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); Date nextMonthLastDay = calendar.getTime();
источник
public Date addMonths(String dateAsString, int nbMonths) throws ParseException { String format = "MM/dd/yyyy" ; SimpleDateFormat sdf = new SimpleDateFormat(format) ; Date dateAsObj = sdf.parse(dateAsString) ; Calendar cal = Calendar.getInstance(); cal.setTime(dateAsObj); cal.add(Calendar.MONTH, nbMonths); Date dateAsObjAfterAMonth = cal.getTime() ; System.out.println(sdf.format(dateAsObjAfterAMonth)); return dateAsObjAfterAMonth ; }`
источник
вы можете использовать класс DateUtils в пакете org.apache.commons.lang3.time
DateUtils.addMonths(new Date(),1);
источник
Если вам нужна однострочная формула (например, для формулы Jasper Reports) и вы не возражаете, если корректировка составляет не ровно один месяц (например, «30 дней» достаточно):
new Date($F{invoicedate}.getTime() + 30L * 24L * 60L * 60L * 1000L)
источник
Вы можете использовать это так:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String d = "2000-01-30"; Date date= new Date(sdf.parse(d).getTime()); date.setMonth(date.getMonth() + 1);
источник
Чтобы найти день через месяц, необходимо посмотреть, какой сегодня день месяца.
Итак, если день первый день месяца, запустите следующий код
Calendar calendar = Calendar.getInstance(); Calendar calFebruary = Calendar.getInstance(); calFebruary.set(Calendar.MONTH, Calendar.FEBRUARY); if (calendar.get(Calendar.DAY_OF_MONTH) == 1) {// if first day of month calendar.add(Calendar.MONTH, 1); calendar.set(Calendar.DATE, calendar.getActualMinimum(Calendar.DAY_OF_MONTH)); Date nextMonthFirstDay = calendar.getTime(); System.out.println(nextMonthFirstDay); }
если это последний день месяца, запустите следующие коды.
else if ((calendar.getActualMaximum(Calendar.DAY_OF_MONTH) == calendar.get(Calendar.DAY_OF_MONTH))) {// if last day of month calendar.add(Calendar.MONTH, 1); calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); Date nextMonthLastDay = calendar.getTime(); System.out.println(nextMonthLastDay); }
если день в феврале, запустите следующий код
else if (calendar.get(Calendar.MONTH) == Calendar.JANUARY && calendar.get(Calendar.DAY_OF_MONTH) > calFebruary.getActualMaximum(Calendar.DAY_OF_MONTH)) {// control of february calendar.add(Calendar.MONTH, 1); calendar.set(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); Date nextMonthLastDay = calendar.getTime(); System.out.println(nextMonthLastDay); }
следующие коды используются для других случаев.
else { // any day calendar.add(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); Date theNextDate = calendar.getTime(); System.out.println(theNextDate); }
источник
java.util.Date
,java.util.Calendar
иjava.text.SimpleDateFormat
, теперь унаследованы , вытеснены классами java.time, встроенными в Java 8 и новее. См. Учебник Oracle .Date dateAfterOneMonth = new DateTime(System.currentTimeMillis()).plusMonths(1).toDate();
источник
Этот метод возвращает текущую дату плюс 1 месяц.
public Date addOneMonth() { Calendar cal = Calendar.getInstance(); cal.add(Calendar.MONTH, 1); return cal.getTime(); }`
источник
public class StringSplit { public static void main(String[] args) { // TODO Auto-generated method stub date(5, 3); date(5, 4); } public static String date(int month, int week) { LocalDate futureDate = LocalDate.now().plusMonths(month).plusWeeks(week); String Fudate = futureDate.toString(); String[] arr = Fudate.split("-", 3); String a1 = arr[0]; String a2 = arr[1]; String a3 = arr[2]; String date = a3 + "/" + a2 + "/" + a1; System.out.println(date); return date; } }
Вывод:
10/03/2020 17/03/2020
источник