超越年份时,日历添加方法错误 [英] Calendar add method error when going beyond the year

查看:136
本文介绍了超越年份时,日历添加方法错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我必须使用java.util.Calendar#add(...)方法,因为它给了意想不到的结果。假设一些初始条件:

I must be using the java.util.Calendar#add(...) method wrong as it is giving me unexpected results. Assume some initial conditions:


  • 我创建一个Calendar对象并初始化为2012年1月30日。

  • 我尝试添加47周,从中提取日期并打印出结果。

  • 我尝试添加48周到原始实例(或其克隆副本),并打印出结果。

我假设两个结果之间会有7天的差异,获得7天+ 1年。

I would assume that there would be 7 days difference between the two results, but I'm getting 7 days + 1 year.

例如:

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Calendar;

public class CalendarFun {
   public static void main(String[] args) {
      Calendar cal = Calendar.getInstance();

      cal.set(Calendar.MONTH, Calendar.JANUARY);
      cal.set(Calendar.DAY_OF_MONTH, 30);
      cal.set(Calendar.YEAR, 2012);

      Date date = cal.getTime();
      SimpleDateFormat dateFormat = new SimpleDateFormat("MM/dd/YYYY");
      System.out.println(dateFormat .format(date));

      Calendar newCal = (Calendar) cal.clone();
      newCal.add(Calendar.WEEK_OF_YEAR, 47);
      System.out.println("add 47 weeks: " + dateFormat.format(newCal.getTime()));

      newCal = (Calendar) cal.clone();
      newCal.add(Calendar.WEEK_OF_YEAR, 48);
      System.out.println("add 48 weeks: " + dateFormat.format(newCal.getTime()));
   }
}

这将输出:

01/30/2012
add 47 weeks: 12/24/2012
add 48 weeks: 12/31/2013

12/31/2013?

12/31/2013? What am I doing wrong?

推荐答案

您的代码没有编译,除非我更改了 YYYY yyyy 。之后,它似乎工作得很好。

Your code didn't compile for me unless I changed the YYYY to yyyy. After that it seems to work fine.

这篇关于超越年份时,日历添加方法错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆