En el siguiente código se puede observar los cambios en un objeto del tipo Date usando Calendar.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.Calendar; | |
import java.util.Date; | |
public class DateOperation { | |
public static void main(String[] args){ | |
//Establecemos la fecha que deseamos en un Calendario | |
Calendar cal = Calendar.getInstance(); | |
cal.setTime(new Date()); | |
//Desplegamos la fecha | |
Date tempDate = cal.getTime(); | |
System.out.println("Fecha actual: " + tempDate); | |
//Le cambiamos la hora y minutos | |
cal.set(Calendar.HOUR, cal.get(Calendar.HOUR)+ 2); | |
cal.set(Calendar.MINUTE, cal.get(Calendar.MINUTE)- 5); | |
tempDate = cal.getTime(); | |
System.out.println("Hora modificada: " + tempDate); | |
//Le cambiamos el mes | |
cal.set(Calendar.MONTH, cal.get(Calendar.MONTH)+1); | |
System.out.println("Fecha modificada: " + cal.getTime()); | |
//De la misma forma se puede cambiar año, semana, etc | |
} | |
} |
Al ejecutar el codigo se obtendra el siguiente resultado:
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Fecha actual: Sat Jan 24 19:13:29 CST 2015 | |
Hora modificada: Sat Jan 24 21:08:29 CST 2015 | |
Fecha modificada: Tue Feb 24 21:08:29 CST 2015 |
Para tu ejemplo restaste 13 -5, pero ¿cómo resto un número mayor de minutos al minuendo? si quiero restar 14 minutos, calendar.minute queda con -1 y la hora no cambia.
ResponderEliminarGracias
Saludos
Hola. Los metodos set de calendario solo aceptan valores validos del para cada tipo de elemento. Por ejemplo Minuto del 0 al 59, Horas del 0 al 23, etc. Si le pones un valor fuera de este rango no realiza el cambio como dices. Para el caso que dices deberías hacer la validación y cambiar la hora y minutos.
Eliminarhola te consulto como puedo hacer para sumar 7 dias a la fecha, pero sin que aparezca la hora, minutos y segundos?
ResponderEliminares mas los dias que tengo que sumar es sobre un dato que traigo de mi base de datos. espero tu respuesta. saludos y gracias
Hola Cuba!
EliminarDe la misma forma que en los horas, minutos y meses puedes usar los metodos set y get solo que con DATE. De la siguiente forma:
cal.set(Calendar.DATE, cal.get(Calendar.DATE)+7);
buenas tardes ayudeme con la siguiente informacion, como puedo restar el tiempo, es decir la diferencia de tiempo
ResponderEliminarHOLA A TODOS. Nesecito sumar de igual forma, pero al ver que no hay forma... se me ocurre algo y espero ayudarlos (supongamos que la fecha es 25/10/2020 23:45).
ResponderEliminarCalendar cal = Calendar.getInstance();
int dia = cal.get(Calendar.DATE);
int mes = cal.get(Calendar.MONTH);
int hora = cal.get(Calendar.HOUR_OF_DAY);
int minuto = cal.get(Calendar.MINUTE);
int nuevoMin = min + 35;
Int nuevaHora = hora + 12;
Int nuevoDia = dia + 15;
If(nuevoMin > 60){
Int x = nuevoMin-60;
}
If(nuevaHora > 24){
Int y= nuevaHora-24;
}
If(nuevoDia > 31){
Int z= nuevoDia -31;
}
Y ya imprimirlo...tienes que ver si el es es de 31 o 30, o 28, y eso es mas facil
A salida seria
Eliminar09/10/2020. 11:20
Ya com eso puedes crear un metodo...
Por ejemplo en el caso de los meses
If (nuevoMes > 12){
nuevoMes = nuevoMes-12;
anio+1;
}