La adición de un día a un calendario en Android falla el 31

Supongamos que la fecha actual es el 28 de mayo. Si llamo a los siguientes comandos para que la salida se convierta en

cal.add(Calendar.DATE, 1); // Day = 29 cal.add(Calendar.DATE, 1); // Day = 30 cal.add(Calendar.DATE, 1); // Day = 31 cal.add(Calendar.DATE, 1); // Day = 31 cal.add(Calendar.DATE, -1); // Day = 29 

¿Por qué esto no es saltar en el próximo mes. Y por qué Se pegó en el 31. (Pero realmente cuando menos uno salta a 29.

Cuando agrega 1 al campo Calendar.DATE, debe incrementar el mes también cuando se alcance el final del mes (31 en el caso de mayo) de modo que usted escribió no tiene sentido. Debug y asegúrese de que el valor del día es de hecho lo que usted piensa que es

Usted puede hacer fácilmente esto de dos maneras simples mi amigo. El primero es:

 Calendar cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_MONTH, 1); 

Y el segundo es:

 Calendar cal = Calendar.getInstance(); cal.add(Calendar.HOUR_OF_DAY, 24); 

Creo que le gustaría encontrar esta cosa. Gracias.

Parece que estoy equivocado! De acuerdo con la api, roll sólo actualiza el campo spezific!

Si agregas días a un intento de calendario

 cal.roll(Calendar.DATE, 1); 

Esto incrementará el mes y el año cuando se sobrevole

¿Qué implementación de Calendar está utilizando? Porque parece que funciona para todos los demás …

Comprobé, agrega con éxito. Mira mi código y o / p:

 Calendar cal = Calendar.getInstance(); // today is 09-Aug-2012 for(int i=0;i<23;i++) { cal.add(Calendar.DATE, 1); } System.out.println(cal.get(Calendar.DAY_OF_MONTH)); 

O / p

1

No es una respuesta, sólo una pista: Me pareció que sucede cuando el horario de verano comienza entre las fechas. Tal vez sea tu caso

Por ejemplo: El DST de Brazillian comenzó este año en "Sun Oct 20 00:00:00 2013"

 Calendar cal = Calendar.getInstance(); // today = Sat Oct 19 00:00:00 BRT 2013 cal.add(Calendar.DATE, 1); // = Sat Oct 19 23:00:00 BRT 2013 

Por desgracia, todavía no sé cómo solucionarlo.

Esto también debe hacer el truco.

 Calendar cal = Calendar.getInstance(); cal.add(Calendar.DAY_OF_YEAR, 1); 

Puede probar que funciona con:

 for (int i = 0; i < 365; i++) { cal.add(Calendar.DAY_OF_YEAR, 1); System.out.println(cal.getTime().toString()); } 
  • Algoritmo de foto / imagen a esbozo
  • Android: validar el archivo xml en tiempo de compilación?
  • ApiDemos 3.0 / 3.1 no creará debido a tipos no resueltos
  • Las invitaciones a los servicios de juegos de Google se pierden
  • No se puede reproducir un archivo .wav invertido con MediaPlayer
  • JavaPoet + Android Studio "addModifiers (Modifier) ​​no se puede aplicar a Modificador"
  • Regex para eliminar el número de pista del nombre de la canción?
  • El usuario no es elegible para esta compra en la versión de compra de aplicaciones3
  • Hora de Joda y error de ProGuard al exportar .apk
  • Obtener OnActivityResult al volver de startActivityForResult en Adapter
  • Convertir valor de color entero en RGB
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.