为什么2009年1月1日的Calendar.DAY_OF_YEAR居然是364?直到1月4日才恢复。
d1 = dateFormat.parse(dateStart);//d1=2009-01-01
Calendar c1 = Calendar.getInstance();
c1.setTime(d1);
c1.get(Calendar.DAY_OF_YEAR);//结果居然是364
请高手指点迷津。

解决方案 »

  1.   

    没出现你说的问题, 是不是你的DateFormat中的patter写错了.
    public class TestDate {
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
    @Test
    public void test1() throws Exception {
    String dateStart = "2009-01-01";
    Date d1 = dateFormat.parse(dateStart);//d1=2009-01-01 
    Calendar c1 = Calendar.getInstance(); 
    c1.setTime(d1); 
    int y = c1.get(Calendar.DAY_OF_YEAR);
    System.out.println("Day of year:" + y + " of " + d1);
    }
    }
      

  2.   

    这是我的代码:
    DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

    Date d1 = null;
    Date d2 = null;
    try{
    d1 = dateFormat.parse(dateStart);
    d2 = dateFormat.parse(dateEnd);
    }catch(ParseException ex){
    System.out.print(ex);
    }
    System.out.print("$$$$$$$$$$$$"+dateStart+"$$$$$$$$$");
    Calendar c1 = Calendar.getInstance();
    Calendar c2 = Calendar.getInstance();
    c1.setTime(d1);
    c2.setTime(d2);
    if(c1.after(c2)){
    c1 = c2;
    c2.setTime(d1);
    }

    int dayOfWeek = c1.get(Calendar.DAY_OF_WEEK) - 1;//星期
    if(dayOfWeek > 1){
    c1.add(Calendar.DAY_OF_MONTH, -(dayOfWeek - 1));
    dayOfWeek = 1;
    }


    int betweenDays = c2.get(Calendar.DAY_OF_YEAR) - c1.get(Calendar.DAY_OF_YEAR);//相隔天数
    System.out.print("#######"+c2.get(Calendar.DAY_OF_YEAR)+"########");
    System.out.print("#######"+c1.get(Calendar.DAY_OF_YEAR)+"########");
    这是日志里打印出来的信息:
    $$$$$$$$$$$$2009-01-03$$$$$$$$$#######31###############364########2008-12-22 21:03:47,168 DEBUGc2是正常的,就是不知道为什么c1在1月3日前都是364,设成1月4就会变回4了
      

  3.   

    那就是你这里错了
    int dayOfWeek = c1.get(Calendar.DAY_OF_WEEK) - 1;//星期 
    if(dayOfWeek > 1){ 
    c1.add(Calendar.DAY_OF_MONTH, -(dayOfWeek - 1)); 
    dayOfWeek = 1; 
    }