thanx piyush, i jaki ten format daty kalibru, muszę to zapisać w mysql
kiran
Typ danych mysql dla daty to DATETIME.
kiran
czy jest to poprawny format daty, który zwraca, którego mogę użyć do przechowywania w mysql
kiran
1
Kod Java dodający miesiąc do bieżącej daty w żądanym formacie wyglądałby tak, jak pokazano poniżej. Teraz do Ciebie należy przekonwertowanie tego ciągu znaków na datę i wstawienie go do bazy danych MYSql. Zauważ, że możesz zmienić format daty w konstruktorze DateFormat lub później w zapytaniu MYSQL za pomocą funkcji STR_TO_DATE (str, format). DateFormat formatter = nowy SimpleDateFormat ("rrrr-MM-dd gg: mm: ss"); Calendar now = Calendar.getInstance (); now.add (Calendar.MONTH, 1); String dateString = formatter.format (now.getTime ());
Struktura java.time jest wbudowana w Javę 8 i nowsze. Klasy te zastąpić dawne zajęcia kłopotliwe Date-Time, takich jak java.util.Date, .Calendar, i java.text.SimpleDateFormat. Czas Jody zaleca również migrację do java.time.
Aby dowiedzieć się więcej, zobacz samouczek Oracle . I przeszukaj Stack Overflow, aby znaleźć wiele przykładów i wyjaśnień.
Znaczna część funkcjonalności java.time jest przenoszona z powrotem do Javy 6 i 7 w ThreeTen-Backport i dalej dostosowywana do Androida w ThreeTenABP .
Tylko data
Jeśli chcesz mieć tylko datę, użyj LocalDateklasy.
ZoneId z = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( z );
dzisiaj.toString (): 2017-01-23
Dodaj miesiąc.
LocalDate oneMonthLater = today.plusMonths( 1 );
oneMonthLater.toString (): 2017-02-23
Data-godzina
Może chcesz podać godzinę wraz z datą.
Najpierw uzyskaj bieżący moment w UTC z rozdzielczością nanosekund .
Instant instant = Instant.now();
Dodanie miesiąca oznacza określenie dat. A określenie dat oznacza zastosowanie strefy czasowej. W dowolnym momencie data zmienia się na całym świecie, a nowy dzień wschodzi wcześniej na wschodzie. Więc dostosuj to Instantdo strefy czasowej.
Dokonując tego rodzaju obliczeń, możesz chcieć dostosować porę dnia do pierwszej chwili dnia. Nie zawsze jest to pierwsza chwila, 00:00:00.0więc pozwól java.time określić porę dnia.
Projekt ThreeTen-Extra rozszerza java.time o dodatkowe klasy. Ten projekt jest poligonem doświadczalnym dla ewentualnych przyszłych dodatków do java.time. Można znaleźć kilka przydatnych klas tutaj takie jak Interval, YearWeek, YearQuarter, i więcej .
Joda-Time
Aktualizacja: Projekt Joda-Time jest teraz w trybie konserwacji. Jego zespół doradza migrację do klas java.time. Zostawiam tę sekcję nietkniętą dla potomności.
Biblioteka Joda-Time oferuje metodę dodawania miesięcy w inteligentny sposób.
Czy możesz wyjaśnić, co robi twój kod, a nie tylko duży blok kodu?
Necoras
Mój kod jest bardziej restrykcyjny i bardziej ogólny. Bardziej restrykcyjne, ponieważ obsługuje tylko datę (w postaci ciągu) o ustalonym formacie „MM / dd / rrrr”. Ogólny, ponieważ umożliwia dodanie dowolnego dodatniego miesiąca w określonym dniu.
DJAM Silvère Gatien
Tak więc, jeśli musisz mieć mniej restrykcyjny kod, który pobiera dowolną java.util.Date i renderuje inną java.util.Date po dodaniu miesiąca, zobacz poniżej: Calendar cal = Calendar.getInstance (); cal.setTime (data); cal.add (Calendar.MONTH, 1); cal.getTime ();
DJAM Silvère Gatien
3
możesz użyć klasy DateUtils w pakiecie org.apache.commons.lang3.time
Jeśli potrzebujesz jednej linijki (np. Dla formuły Jasper Reports) i nie masz nic przeciwko, jeśli korekta nie wynosi dokładnie jednego miesiąca (tj. Wystarczy „30 dni”):
Nie zapomnij dodać przyrostka „L” do liczby w przeciwnym razie, jeśli zostanie potraktowane jako zwykłe int i przepełni się do liczby ujemnej!
Nicolas Buquet
1
Możesz używać w ten sposób;
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 Od wersji JDK 1.1 * zastąpione przez <code> Calendar.set (Calendar.MONTH, int month) </code>. Jak mówi Date.java.
Jasper Lankhorst
1
Aby znaleźć dzień po miesiącu, należy przyjrzeć się, jaki dzień miesiąca jest dzisiaj.
Więc jeśli dzień jest pierwszym dniem miesiąca, uruchom następujący kod
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);
}
jeśli dzień jest ostatnim dniem miesiąca, uruchom następujące kody.
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);
}
jeśli dzień jest w lutym, należy uruchomić następujący kod
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);
}
następujące kody są używane w innych przypadkach.
else { // any day
calendar.add(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));
Date theNextDate = calendar.getTime();
System.out.println(theNextDate);
}
Przede wszystkim odpowiedź jest błędna na podstawie PO. Po drugie, odpowiedź na OP została udzielona 8 (!) Lat temu, a po trzecie, istnieją lepsze sposoby formatowania danych wyjściowych niż używanie mnóstwa ciągów.
Odpowiedzi:
Calendar cal = Calendar.getInstance(); cal.add(Calendar.MONTH, 1);
źródło
Java 8
LocalDate futureDate = LocalDate.now().plusMonths(1);
źródło
Możesz skorzystać z pomocniczej klasy pomocniczej DateUtils ze wspólnoty lang Apache.
Date newDate = DateUtils.addMonths(new Date(), 1);
Możesz pobrać commons lang jar ze strony http://commons.apache.org/proper/commons-lang/
źródło
tl; dr
Przykład:
LocalDate.now( ) .plusMonths( 1 );
Lepiej określić strefę czasową.
LocalDate.now( ZoneId.of( "America/Montreal" ) .plusMonths( 1 );
java.time
Struktura java.time jest wbudowana w Javę 8 i nowsze. Klasy te zastąpić dawne zajęcia kłopotliwe Date-Time, takich jak
java.util.Date
,.Calendar
, ijava.text.SimpleDateFormat
. Czas Jody zaleca również migrację do java.time.Aby dowiedzieć się więcej, zobacz samouczek Oracle . I przeszukaj Stack Overflow, aby znaleźć wiele przykładów i wyjaśnień.
Znaczna część funkcjonalności java.time jest przenoszona z powrotem do Javy 6 i 7 w ThreeTen-Backport i dalej dostosowywana do Androida w ThreeTenABP .
Tylko data
Jeśli chcesz mieć tylko datę, użyj
LocalDate
klasy.ZoneId z = ZoneId.of( "America/Montreal" ); LocalDate today = LocalDate.now( z );
Dodaj miesiąc.
LocalDate oneMonthLater = today.plusMonths( 1 );
Data-godzina
Może chcesz podać godzinę wraz z datą.
Najpierw uzyskaj bieżący moment w UTC z rozdzielczością nanosekund .
Dodanie miesiąca oznacza określenie dat. A określenie dat oznacza zastosowanie strefy czasowej. W dowolnym momencie data zmienia się na całym świecie, a nowy dzień wschodzi wcześniej na wschodzie. Więc dostosuj to
Instant
do strefy czasowej.ZoneId zoneId = ZoneId.of( "America/Montreal" ); ZonedDateTime zdt = ZonedDateTime.ofInstant( instant , zoneId );
Teraz dodaj swój miesiąc. Niech java.time zajmie się miesiącem przestępnym i faktem, że miesiące mają różną długość.
ZonedDateTime zdtMonthLater = zdt.plusMonths( 1 );
Dokonując tego rodzaju obliczeń, możesz chcieć dostosować porę dnia do pierwszej chwili dnia. Nie zawsze jest to pierwsza chwila,
00:00:00.0
więc pozwól java.time określić porę dnia.Informacje o java.time
Struktura java.time jest wbudowana w Javę 8 i nowsze. Klasy te kłopotliwe zastąpić stary starszych klas Date-Time, takich jak
java.util.Date
,Calendar
, iSimpleDateFormat
.Projekt Joda-Time , obecnie w trybie konserwacji , zaleca migrację do klas java.time .
Aby dowiedzieć się więcej, zobacz samouczek Oracle . I przeszukaj Stack Overflow, aby znaleźć wiele przykładów i wyjaśnień. Specyfikacja to JSR 310 .
Skąd wziąć klasy java.time?
Projekt ThreeTen-Extra rozszerza java.time o dodatkowe klasy. Ten projekt jest poligonem doświadczalnym dla ewentualnych przyszłych dodatków do java.time. Można znaleźć kilka przydatnych klas tutaj takie jak
Interval
,YearWeek
,YearQuarter
, i więcej .Joda-Time
Aktualizacja: Projekt Joda-Time jest teraz w trybie konserwacji. Jego zespół doradza migrację do klas java.time. Zostawiam tę sekcję nietkniętą dla potomności.
Biblioteka Joda-Time oferuje metodę dodawania miesięcy w inteligentny sposób.
DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" ); DateTime now = DateTime.now( timeZone ); DateTime nextMonth = now.plusMonths( 1 );
Możesz skupić się na dniu, dostosowując porę dnia do pierwszej chwili dnia.
DateTime nextMonth = now.plusMonths( 1 ).withTimeAtStartOfDay();
źródło
Calendar cal = Calendar.getInstance(); cal.add(Calendar.MONTH, 1); java.util.Date dt = cal.getTime();
źródło
(na podstawie Duggu)
public static Date addOneMonth(Date date) { Calendar cal = Calendar.getInstance(); cal.setTime(date); cal.add(Calendar.MONTH, 1); return cal.getTime(); }
źródło
Użyj kalandera i wypróbuj ten kod.
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();
źródło
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 ; }`
źródło
możesz użyć klasy DateUtils w pakiecie org.apache.commons.lang3.time
DateUtils.addMonths(new Date(),1);
źródło
Jeśli potrzebujesz jednej linijki (np. Dla formuły Jasper Reports) i nie masz nic przeciwko, jeśli korekta nie wynosi dokładnie jednego miesiąca (tj. Wystarczy „30 dni”):
new Date($F{invoicedate}.getTime() + 30L * 24L * 60L * 60L * 1000L)
źródło
Możesz używać w ten sposób;
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);
źródło
Aby znaleźć dzień po miesiącu, należy przyjrzeć się, jaki dzień miesiąca jest dzisiaj.
Więc jeśli dzień jest pierwszym dniem miesiąca, uruchom następujący kod
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); }
jeśli dzień jest ostatnim dniem miesiąca, uruchom następujące kody.
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); }
jeśli dzień jest w lutym, należy uruchomić następujący kod
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); }
następujące kody są używane w innych przypadkach.
else { // any day calendar.add(Calendar.DATE, calendar.getActualMaximum(Calendar.DAY_OF_MONTH)); Date theNextDate = calendar.getTime(); System.out.println(theNextDate); }
źródło
java.util.Date
,java.util.Calendar
ijava.text.SimpleDateFormat
są teraz starsze , zastąpione przez klasy java.time wbudowane w Javę 8 i nowsze. Zobacz samouczek firmy Oracle .Date dateAfterOneMonth = new DateTime(System.currentTimeMillis()).plusMonths(1).toDate();
źródło
Ta metoda zwraca bieżącą datę plus 1 miesiąc.
public Date addOneMonth() { Calendar cal = Calendar.getInstance(); cal.add(Calendar.MONTH, 1); return cal.getTime(); }`
źródło
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; } }
Wynik:
10/03/2020 17/03/2020
źródło