2014-09-23 111 views
1

我想在DateTime中添加/减去多少年,几个月或几天。即时通讯使用Jodatime的日期,这是我的代码:在Swing中添加或减去DateTime中的日期时间

else if (e.getSource()==calcul1){ 
      Date date1 = (Date) datePicker3.getDate(); 
      DateTime dt1 = new DateTime(date1); 

      if (ajout.isSelected()){ 

      dt1.plusYears((Integer)anlist.getValue()); 
      dt1.plusMonths((Integer)moilist.getValue()); 
      dt1.plusDays((Integer)jourlist.getValue()); 
      } 
      if (soustr.isSelected()){ 
       dt1.minusYears((Integer)anlist.getValue()); 
       dt1.minusMonths((Integer)moilist.getValue()); 
       dt1.minusDays((Integer)jourlist.getValue()); 
      } 
      DateTimeFormatter formatter = DateTimeFormat.forPattern("EEEE dd MMMM yyyy"); 
      textdate.setText(formatter.print(dt1)); 
     } 

的问题是,我总是得到今天的日期在JTextField中,显示的内容,我的日期时间并不是不顾加法和减法的操作来改变。

+0

尝试使用的java.util.Calendar – brso05 2014-09-23 14:48:22

+0

你肯定至少有一个的'ajout'(但不能同时)和'soustr'选择? – dasblinkenlight 2014-09-23 14:50:21

+0

@dasblinkenlight是的。 'Ajout'和'soustr'是两个JRadioButton,我已经设置其中一个默认选中 – Somar 2014-09-23 14:52:16

回答

2

加法和减法方法返回一个新的DateTime。试试这个:

else if (e.getSource()==calcul1){ 
     Date date1 = (Date) datePicker3.getDate(); 
     DateTime dt1 = new DateTime(date1); 

     if (ajout.isSelected()){ 

     dt1 = dt1.plusYears((Integer)anlist.getValue()); 
     dt1 = dt1.plusMonths((Integer)moilist.getValue()); 
     dt1 = dt1.plusDays((Integer)jourlist.getValue()); 
     } 
     if (soustr.isSelected()){ 
      dt1 = dt1.minusYears((Integer)anlist.getValue()); 
      dt1 = dt1.minusMonths((Integer)moilist.getValue()); 
      dt1 = dt1.minusDays((Integer)jourlist.getValue()); 
     } 
     DateTimeFormatter formatter = DateTimeFormat.forPattern("EEEE dd MMMM yyyy"); 
     textdate.setText(formatter.print(dt1)); 
    } 
+0

是的!谢谢。 – Somar 2014-09-23 14:54:22

+1

非常欢迎。我总是想知道为什么我的对象不会通过任何方法改变。 – Michael 2014-09-23 14:55:09

+0

@Souad你会问这个问题吗?如果这个解决方案适合你? – Michael 2014-09-23 16:51:52