2017-06-21 3 views
0

ich die aktuelle Calendar Objekt und log ihr WertZurücksetzen des Zeitparameters im Calendar-Objekt nach dem Zurücksetzen anderer Felder?

Calendar now = Calendar.getInstance(); 
Log.v(TAG,now.toString()) 

ich die Zeit auf now eingestellt und melden Sie den Wert

now.set(Calendar.HOUR, 20 % 12); 
now.set(Calendar.MINUTE,00); 
now.set(Calendar.HOUR_OF_DAY,20); 
now.set(Calendar.SECOND,0); 
now.set(Calendar.MILLISECOND,0); 
Log.v(TAG,now.toString()) 

Wenn ich eine Seite an Seite Vergleich der beiden Protokolle machen, ich sehen einen Unterschied

java.util.GregorianCalendar[time=1498086510685,areFieldsSet=true... 
java.util.GregorianCalendar[time=?,areFieldsSet=false... 

Alle anderen Felder erscheinen die gleiche

sein

Ich glaube, ich habe zwei Fragen

  1. Wie richte ich time es richtigen Wert ist?
  2. Wird areFieldsSet automatisch eingestellt, wenn ich den time Parameter zurücksetze?

Antwort

1

Wenn Sie die Javadocs für java.util.Calendar gelesen hatte, was Sie tun sollten, würden Sie

set(f, value) ändert Kalenderfeld f zu value gesehen. Darüber hinaus legt es eine interne Elementvariable fest, um anzugeben, dass das Kalenderfeld f geändert worden ist. Obwohl f Kalenderfeld sofort geändert wird, wird der time Wert des Kalenders in Millisekunden nicht bis zum nächsten Aufruf neu berechnet get(), getTime(), getTimeInMillis(), add() oder roll() gemacht wird.

Eine der angegebenen Funktionen aufrufen.

Verwandte Themen