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];