java.util.Calendar WEEK OF YEAR为1表示365&;第366天

java.util.Calendar WEEK OF YEAR为1表示365&;第366天,java,Java,尝试查找给定日期的一年中的一周 使用下面的代码。[Java 1.7] 问题: 2012年12月29日=第52周 2012年12月30日=第一周 2013年12月30日=第52周 2013年12月31日=第1周 当一年中的某一天=365或366时,它将一年中的某一周指定为1 看起来有模52发生了。 如何解决这个问题 import java.util.Calendar; import java.util.GregorianCalendar; public class cal2{ public

尝试查找给定日期的一年中的一周
使用下面的代码。[Java 1.7]

问题:
2012年12月29日=第52周
2012年12月30日=第一周
2013年12月30日=第52周
2013年12月31日=第1周

当一年中的某一天=365或366时,它将一年中的某一周指定为1
看起来有模52发生了。
如何解决这个问题

import java.util.Calendar;
import java.util.GregorianCalendar;

public class cal2{
   public static void main (String[] args) {

   Calendar mycal = GregorianCalendar.getInstance();  

   mycal.setLenient(false);

   int year  = 2012;
   int month = 11;  //0=Jan, 11=Dec
   int date  = 29; 

   mycal.set(year , 0 , 1);
   mycal.setFirstDayOfWeek(mycal.get(mycal.DAY_OF_WEEK));

   mycal.set(year,month,date);
   System.out.println("\n>>>>>>>>WEEK :"+mycal.get(mycal.WEEK_OF_YEAR));

   // System.out.println("\nDATE :"+mycal);

   }
}

来自文档

第一周

日历使用两个日历定义特定于区域设置的每周七天 参数:一周的第一天和第一周的最短天数 一周(从1日到7日)。这些数字取自区域设置资源 构建日历时的数据。也可以指定它们 通过设置其值的方法显式执行

设置或获取月中的周或年中的周字段时, 日历必须确定月份或年份的第一周作为 参考点。一个月或一年的第一周被定义为 从getFirstDayOfWeek()开始的最早七天期间,以及 至少包含该月的getMinimalDaysInFirstWeek()天,或 一年。周编号…,-1,第一周之前为0;周数 2, 3,... 跟着它走。请注意,由 get()可能不同。例如,特定的日历子类可能 将一年中第1周之前的一周指定为前一周的第n周 一年


这是因为第53周不一定存在,请检查以了解有关ISO周的更多信息,尤其是在您的情况下:
“第一周是从12月29日至1月4日的星期一开始的一周”

@Ranga Nathan您现在明白了吗?请添加一些描述
String[] dates = new String[] { "SUNDAY", "MONDAY", "TUESDAY", //
        "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY" };
Calendar cal = Calendar.getInstance();
cal.set(Integer.parseInt(year), 
        Integer.parseInt(month) - 1, 
        Integer.parseInt(day));
int date_of_week = cal.get(Calendar.DAY_OF_WEEK);
return dates[date_of_week - 1];