Kalender - Tag addieren gibt 31. Juni zurück

Nisbo

Bekanntes Mitglied
Servus,

ich habe mir einen Methode gebastelt welche mir jeweils einen Tag drauf rechnen soll

Java:
    private String getTomorrowDay(Integer shiftDay, Integer shiftMonth, Integer shiftYear){
        Calendar myCal3 = new GregorianCalendar(shiftYear, shiftMonth , shiftDay);  
        myCal3.add( Calendar.DAY_OF_MONTH, +1 );
        String morgen = Integer.toString(myCal3.get(Calendar.DAY_OF_MONTH));
      
        return morgen;
    }

Übergeben wird das jeweilige Jahr, der Monat und der Tag.
Wenn ich jetzt aber
Java:
getTomorrowDay(30, 6, 2016);
übergebe bekomme ich 31 zurück was abe rzumindest in unserem Universum kein gültiger Tag für den Juni ist.

PS: ja der Rückgabewert soll ein String sein 😉
 
OK wieder mal was selbst raus gefunden ^^
Na für die Suchfunktion, hier die Lösung:
month - the value used to set the MONTH calendar field in the calendar. Month value is 0-based. e.g., 0 for January.

Jetzt habe ich allerdings bei der Monatsberechnung das Problem das er mir wenn ich am 30.6. eine Tag addiere den Monat 6 zurück gibt, sprich den 1.6. statt den 1.7.

Java:
    private String getTomorrowMonth(Integer shiftDay, Integer shiftMonth, Integer shiftYear){
        shiftMonth--;
        Calendar myCal3 = new GregorianCalendar(shiftYear, shiftMonth , shiftDay);
        myCal3.add( Calendar.DAY_OF_MONTH, +1 );
        String morgen = Integer.toString(myCal3.get(Calendar.MONTH));
       
        return morgen;
    }
 
Zuletzt bearbeitet:
EDIT geht leider nicht mehr, ich hatte natürlich bei der Rückgabe vergessen wieder 1 zu addieren

Java:
  private String getTomorrowMonth(Integer shiftDay, Integer shiftMonth, Integer shiftYear){
     shiftMonth--; // month - the value used to set the MONTH calendar field in the calendar. Month value is 0-based. e.g., 0 for January.
     Calendar myCal3 = new GregorianCalendar(shiftYear, shiftMonth , shiftDay);
     myCal3.add( Calendar.DAY_OF_MONTH, 1 );
     String morgen = Integer.toString(myCal3.get(Calendar.MONTH) + 1); // add 1 month
     
     return morgen;
   }
 
Hi,
In Java 8 wurden diverse neue Methoden zum Manipulieren von Date hinzugefügt:
http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html
hier mal ein Beispiel dazu:
Java:
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class DateTest {
   private static DateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy");
   private static Date originDate = new Date();
   private static Date newDate = new Date();
   private static int increment = 1;
   
   public static void main(String[] args) {
     setDate();
     getIncrementDate();
     System.out.println(dateFormat.format(newDate));
   }
   
   private static void setDate() {
     try {
       originDate = dateFormat.parse("30.6.2016");
     } catch (ParseException e) {
       e.printStackTrace();
     }
   }
   public static void getIncrementDate() {     
     Calendar c = Calendar.getInstance();
     c.setTime(originDate);
     c.add(Calendar.DATE, increment);
     newDate = c.getTime();
   }
}
 

Zurück
Oben