cómo agregar el número de días a la fecha dada en un campo jtext con tipo de datos de cadena
-
13-12-2019 - |
Pregunta
Buen día .Sólo quiero preguntar sobre cómo agregar días en una fecha determinada.Tengo un jtexfield (txtStart) y otro jtexfield(txtExpiry).Necesito mostrar en txtExpiry la fecha después de 102 días a partir de la fecha en txtStart.Estoy usando el evento KEYRELEASED.Después de ingresar txtStart, la fecha con 102 días adicionales aparecerá en txtExpiry.
Aquí está mi código pero sigue siendo erróneo.
private void txtStartKeyReleased(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
// set calendar to 1 Jan 2007
int a = Integer.parseInt(txtStart.getText());
Calendar calendar = new GregorianCalendar(a,a,a);
calendar.add(Calendar.DAY_OF_MONTH,102);
PrintCalendar(calendar);
}
private void PrintCalendar(Calendar calendar){
// define output format and print
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-mm-dd");
String date = sdf.format(calendar.getTime());
long add = Date.parse(date);
txtExpiry.setText(add); -----> this part here also has an error.
}
mi código todavía no genera la fecha en txtExpiry.gracias de antemano
Aquí está el código correcto después de recibir ayuda:
private void txtStartKeyReleased(java.awt.event.KeyEvent evt) {
try {
Date date1;
date1 = new SimpleDateFormat("yyyy-MM-dd").parse(txtStart.getText());
System.out.println(date1);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Calendar cal = Calendar.getInstance();
cal.setTime(date1);
cal.add(Calendar.DATE, 102);
String expDateString = sdf.format(cal.getTime());
txtExpiry.setText(expDateString);
}catch (ParseException ex) {
Logger.getLogger(ClientInfo.class.getName()).log(Level.SEVERE, null, ex);
}
}
Solución
Usar
yyyy-MM-dd
Nota:Capital MM
Ver : SimpleDateFormat
Ahora, una vez que tengas la instancia de fecha, puedes usar Calendar
hacer la aritmética de los días
Calendar cal = Calendar.getInstance();
cal.setTime(parsedDate);
cal.add(Calendar.DATE, 102);
String expDateString = dateFormatter.format(cal.getTime());
Otros consejos
import java.util.*;
class ISCprac2009q01{
public static void main(String args[])
throws InputMismatchException{
Scanner scan=new Scanner(System.in);
System.out.println("ENTER DAY NUMER(>=1 AND
<=366) : ");
int day_number=scan.nextInt();
System.out.println("ENTER YEAR(4 DIGIT) : ");
int year=scan.nextInt();
System.out.println("ENTER DATE AFTER(N)(>=1 AND
<=100) : ");
int n=scan.nextInt();
if(day_number<1 || day_number>366)
System.out.println("INVALID DAY NUMBER.");
else if(year<1000 || year >9999)
System.out.println("INVALID YEAR");
else if(n<1 || n>100)
System.out.println("INVALID DATE AFTER VALUE.");
else{
//INITIALIZE MONTH NAMES AND NUMBER OF DAYS IN EACH MONTH
String month_names[]={"JANUARY", "FEBRUARY","MARCH",
"APRIL","MAY","JUNE","JULY","AUGUST","SEPTEMBER",
"OCTOBER","NOVERMBER","DECEMBER"};
int month_days[]={31,28,31,30,31,30,31,31,30,31,30,31};
int i, day, month,day_after;
String suffix;
//IF IT IS A LEAP YEAR FEBRURAY SHOULD HAVE 29 DAYS
if(year%400==0 || (year%100!=0 && year%4==0))
month_days[1]=29;
i=0;
//FIND THE DATE CORRESPONDING TO THE DAY NUMBER
day=day_number;
while(day>month_days[i])
{
day-=month_days[i];
i++;
}
month=i;
//ADD SUFFIX AS PER THE DAY
if(day%10==1 && day/10!=1)
suffix="ST";
else if(day%10==2 && day/10!=1)
suffix="ND";
else if(day%10==3 && day/10!=1)
suffix="RD";
else
suffix="TH";
System.out.println("OUTPUT:");
//FIRST PART OF THE OUTPUT
System.out.println(day+suffix+" "+
month_names[month]+" "+year);
//TO CALCULATE DATE AFTER N DAYS
day_after=day_number+n;
i=0;
while(day_after>month_days[i])
{
day_after-=month_days[i];
i++;
if(i==12){
i=0;
year++;
if(year%400==0 || (year%100!=0 && year%4==0))
month_days[1]=29;
}
}
day=day_after;
month=i;
//ADD SUFFIX AS PER THE DAY
if(day%10==1 && day/10!=1)
suffix="ST";
else if(day%10==2 && day/10!=1)
suffix="ND";
else if(day%10==3 && day/10!=1)
suffix="RD";
else
suffix="TH";
//SECOND PART OF THE OUTPUT
System.out.println(day+suffix+" "+
month_names[month]+" "+year);
}
}
}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow