如何在带有字符串数据类型的jtextfield中给出的日期添加天数

时间:2012-03-13 19:02:50

标签: java datetime simpledateformat gregorian-calendar

美好的一天。 我只想询问在给定日期添加天数。 我有一个jtexfield(txtStart)和另一个jtexfield(txtExpiry)。 我需要在txtExpiry中显示自txtStart日期起102天后的日期。 我正在使用KEYRELEASED事件。在输入txtStart之后,额外102天的日期将出现在txtExpiry中。

这是我的代码,但它仍然是错误的。

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.
     }

我的代码仍然不会在txtExpiry中生成日期。提前致谢

接收帮助后,这是正确的代码:

 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);
     } 
}  

3 个答案:

答案 0 :(得分:7)

使用

yyyy-MM-dd

注意:资本MM

请参阅:SimpleDateFormat

现在,一旦有了日期实例,就可以使用Calendar来进行日算术

Calendar cal = Calendar.getInstance();
cal.setTime(parsedDate);
cal.add(Calendar.DATE, 102);
String expDateString = dateFormatter.format(cal.getTime());

答案 1 :(得分:0)

获得正确的format后,您可以使用JodaTime。您可以直接使用JodaTime解析String值,但既然您已经这样做了,我就不会打扰......

Date date = ...;
DateTime dt = new DateTime(date);
dt = dt.plusDays(102);
date = dt.toDate();

答案 2 :(得分:-1)

.hidden {
  display: none;
}