Jak dodać x dni do daty w Javie?Dodawanie dni do daty w Javie
Na przykład, data jest my (dd/mm/rok) = 01/01/2012
dodanie 5 dni, wynik powinien być 06/01/2012
.
Jak dodać x dni do daty w Javie?Dodawanie dni do daty w Javie
Na przykład, data jest my (dd/mm/rok) = 01/01/2012
dodanie 5 dni, wynik powinien być 06/01/2012
.
Jeśli używasz Joda-Time (i istnieje wiele dobrych powodów, aby - prostego, intuicyjnego interfejsu API i wątku bezpieczeństwa), to można to zrobić trywialnie:
(new LocalDate()).plusDays(5);
dać 5 dni od dzisiaj , na przykład.
Jak mogę uzyskać datę przed upływem 10 dni od bieżącej daty przy użyciu joda w formacie rrrr-mm-dd – vishal
Zapoznaj się z właściwością Joda DateTimeFormatters –
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH, 1);
cal.set(Calendar.MONTH, 1);
cal.set(Calendar.YEAR, 2012);
cal.add(Calendar.DAY_OF_MONTH, 5);
Można również odjąć dni jak Calendar.add(Calendar.DAY_OF_MONTH, -5);
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar c = Calendar.getInstance();
c.setTime(new Date()); // Now use today date.
c.add(Calendar.DATE, 5); // Adding 5 days
String output = sdf.format(c.getTime());
System.out.println(output);
, dlaczego setTime do nowej daty(), jednak Calendar.getInstance(). GetTime() daje taki sam ? – Jayanth
Oto prosty kod, aby dać wyjście jako currentdate
+ D days
= some 'x' date
(przyszła data):
DateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy");
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, 5);
System.out.println(dateFormat.format(c.getTime()));
Jest to prosty kod dający wynik jako aktualna data + D dni = niektóre "x" data (data na przyszłość) .. – user3136058
Z Java 8 Date and Time API można użyć klasy LocalDate
.
LocalDate.now().plusDays(nrOfDays)
Zobacz Oracle Tutorial.
Prawidłowa odpowiedź. Proponowałbym również przekazanie strefy czasowej (['ZoneId'] (http://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html)) do [' teraz'] (http://docs.oracle.com/javase/8/docs/api/java/time/LocalDate.html#now-java.time.ZoneId-) metoda zamiast polegać niejawnie na JVM [aktualna domyślna strefa czasowa] (http://docs.oracle.com/javase/8/docs/api/java/time/ZoneId.html#systemDefault--). To ustawienie domyślne może się zmienić w dowolnym momencie * podczas pracy *! Lepiej określić pożądaną/spodziewaną strefę czasową. –
To nie działa tak, jak napisano. Zmień 'plus (nrOfDays)' na 'plusDays (nrOfDays)' lub bardziej uciążliwy 'plus (nrOfDays, ChronoUnit.DAYS)', co wymagałoby zaimportowania 'java.time.temporal.ChronoUnit' oprócz' java.time ' .LocalDate'. – MarredCheese
Dzięki @MarredCheese, odpowiednio zmodyfikowałem odpowiedź. –
Proste, bez jakiegokolwiek innego API:
Aby dodać 8 dni:
Date today=new Date();
long ltime=today.getTime()+8*24*60*60*1000;
Date today8=new Date(ltime);
Ten kod nie uwzględnia faktu, że dni nie zawsze są 24-godzinne. Technicznie dodaje się 192 godziny zamiast 8 dni. Może być poprawny w zależności od tego, co określamy jako "dni". –
"public static Date addRemoveDays (Data d, int dni) { long ltime = d.getTime() + dni * 24 * 60 * 60 * 1000; return new Date (ltime); } ... Data danes = new Date(); //28.4.2016 Data tooOld = MyUtil.addRemoveDays (danes, -80); //18.5.2016 BŁĄD ??? – MatejC
Problem z używaniem takiego kodu polega na tym, że możesz z łatwością przepełnić int, a następnie przejść negatywnie: 90 dni * 24 * 60 * 60 * 1000 = (int) -813934592 To zabierze Cię wstecz. –
Istnieje więcej duplikaty dla tego ogólnego pytania http://stackoverflow.com/questions/2623610/subtracting-days- in-a-calendar-object http://stackoverflow.com/questions/428918/how-can-i-increment-a-date-by-one-day-in-java – AurA
Wyszukaj Joda-Time DateTime plusDays for many przykłady. –
Dlaczego nie zatwierdzić nikogo? – bharatpatel