2016-07-13 2 views
0

Ich versuche, ein Datum von einem DatePicker abrufen und erstellen Sie ein Objekt java.util.Date und ich verstehe nicht, warum ich bekomme der falsche Tag der Woche in der selectedDate Variable. Die Variable currentDate ist korrekt.Zum falschen Tag der Woche bei der Verwendung des Objekts java.util.Date

String dateStr = String.valueOf(dayOfMonth) + "/" + String.valueOf(monthOfYear) + "/" + String.valueOf(year); 
String timeStr = String.valueOf(hourOfDay) + ":" + String.valueOf(minute); 

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm"); 
Date selectedDate = simpleDateFormat.parse(dateStr + " " + timeStr); 
Date currentDate = Calendar.getInstance().getTime(); 

System.out.println("selectedDate = " + String.valueOf(selectedDate)); 
System.out.println("currentDate = " + String.valueOf(currentDate)); 

Ausgang:

selectedDate = Mon Jun 13 12:44:00 WEST 2016 
currentDate = Wed Jul 13 12:44:04 WEST 2016 

Antwort

2

Sie überprüfen sollten, (Print oder debug) Wert von monthOfYear - die Ausgabe zeigt, dass der Wert 6 ist, wenn Sie es zu erwarten scheinen 7 zu sein (wahrscheinlich, weil Sie haven t berücksichtigt, dass datePicker.getMonth() einen Wert zwischen 0 und 11 zurückgibt.

Da Sie nicht zeigen, wie Sie den Wert erhalten haben, ist es schwierig, viel mehr zu sagen.

0

Versuchen Sie folgendes:

Calendar c = Calendar.getInstance(); 

int[] date = { 
     c.get(Calendar.DATE), c.get(Calendar.MONTH), 
     c.get(Calendar.YEAR), c.get(Calendar.DAY_OF_WEEK) 
}; 

date[1]+=1; 

Dieses Setup verwendet die Kalender-Klasse, die in Android integriert ist. date [1] + = 1 ist erforderlich, um den genauen Monat zu erhalten, da der Index von 0-11 beginnt. Alle anderen sind in Ordnung, soweit ich weiß.

0

es sieht tatsächlich für mich aus, dass ein Punkt Sie beginnen, von '0' und auf der anderen von '1' zu zählen.

vielleicht versuchen, die Zeichenfolgen an die Konsole zum Debuggen zuerst übergeben.

Verwandte Themen