java日历,总和月,年不变

时间:2018-03-25 12:38:43

标签: java calendar syntax-error

输出中的年份如何根据月份的总和加起来?

int sewa = 10
Calendar now = Calendar.getInstance();
    int year = now.get(Calendar.YEAR);
    String cyear = Integer.toString(year);
    int mont = (now.get(Calendar.MONTH) + 1);
    String cmont = Integer.toString(mont);
   int day  =  (now.get(Calendar.DATE) );
    String cday = Integer.toString(day);
    String date = cyear +"/"+cmont+"/"+cday;


 Calendar ex = Calendar.getInstance();
    int exyear = ex.get(Calendar.YEAR);
    String excyear = Integer.toString(exyear);
    ex.add(Calendar.MONTH,+sewa);
    int exmont = (ex.get(Calendar.MONTH) + 1);
    String excmont = Integer.toString(exmont);
   int exday  =  (ex.get(Calendar.DATE) );
    String excday = Integer.toString(exday);
    String exdate = excyear +"/"+excmont+"/"+excday;
  System.out.println(date);
    System.out.println("+++++");
    System.out.println(exdate);
  

现在:2018/3/25   +++++之后:2018/1/25   如何输出:2019/1/25

2 个答案:

答案 0 :(得分:1)

如果您使用的是Java 8或更高版本,请使用LocalDate代替Calendar课程。使用方法plusDays()plusMonths()plusYears()添加天,月和年非常容易。就这么简单:

    LocalDate today = LocalDate.now();
    today.plusDays(20);
    today.plusMonths(1);
    today.plusYears(5);

LocalDateLocalDateTimeJSR-310一起使用,更简单,直接且易于使用,替代DateCalendar

但是,如果您使用旧版本的java,或者出于其他原因需要使用DateCalendar,则可以使用与使用月份相同的方式增加年数,使用

    ex.add(Calendar.YEAR, 5);

答案 1 :(得分:0)

您将年份捕获到变量......

int exyear = ex.get(Calendar.YEAR);
String excyear = Integer.toString(exyear);

...在您向日历添加10个月之前......

 ex.add(Calendar.MONTH,+sewa);

...导致excyear仍未更新。

要解决此问题,请为语句指定正确的顺序(获取日历 - >添加月份 - >获取字符串 - >打印)。或者更好地使用SimpleDateFormat

Calendar ex = Calendar.getInstance();
ex.add(Calendar.MONTH, sewa);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
String exdate = sdf.format(ex.getTime());
System.out.println(exdate);

打印出来:

  

2019年1月25日