给周编号和年份找到星期的第一天和最后一天

问题描述:

我有周数和年份,我想要得到星期的第一天和最后一天的日期,这是我的代码,它给出我错了结果,请告诉我我做错了什么。提前致谢。给周编号和年份找到星期的第一天和最后一天

SimpleDateFormat dt = new SimpleDateFormat("dd/mm/yyyy"); 
String start =""; 
String end =""; 
int week = 38; 
int yeat = 2016; 
Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.WEEK_OF_YEAR, week); 
calendar.set(Calendar.YEAR, year); 
// firt day of week 
start = dt.format(calendar.getTime()); 
calendar.add(Calendar.DAY_OF_MONTH, 6); 
//last day of week 
end = dt.format(calendar.getTime()); 
+0

可能重复:如何计算在Java的ISO8601星期数日期(http://*.com/q/25084576/642706) –

  • 更正DateFormatter语法,一个月应该在死刑案件
  • 获取周日和周六日起在特定的一周中, 一年过去了。

    SimpleDateFormat dt = new SimpleDateFormat("dd/MM/yyyy"); 
        String start =""; 
        String end =""; 
        int week = 38; 
        int year = 2016; 
        Calendar calendar = Calendar.getInstance(); 
        calendar.set(Calendar.YEAR, year); 
        calendar.set(Calendar.DAY_OF_WEEK,Calendar.SUNDAY); 
        calendar.set(Calendar.WEEK_OF_YEAR, week); 
         start = dt.format(calendar.getTime()); 
        calendar.set(Calendar.DAY_OF_WEEK,Calendar.SATURDAY); 
         end = dt.format(calendar.getTime()); 
        System.out.println(start+" |"+end); 
    

如果您使用Java 8+,你可以使用内置的周日期格式:

int week = 38; 
int year = 2016; 
String weekYear = year + "-W" + week + "-7"; //2016-W38-7 
LocalDate d = LocalDate.parse(year + "-W" + week + "-7", ISO_WEEK_DATE); //2016-09-25 

注:-7在字符串的结尾表示一周的最后一天(即星期日)。

试试这个:

SimpleDateFormat dt = new SimpleDateFormat("dd/mm/yyyy"); 
String start =""; 
String end =""; 
int week = 38; 
int year = 2016; 
Calendar calendar = Calendar.getInstance(); 
calendar.set(Calendar.WEEK_OF_YEAR, week); 
calendar.set(Calendar.YEAR, year); 

// firt day of week 
Calendar cal = calendar; 
while (cal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) { 
    cal.add(Calendar.DATE, -1); 
} 
start = dt.format(cal.getTime()); 
System.out.println(start); 

Calendar cal1 = calendar; 
while (cal1.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY) { 
    cal1.add(Calendar.DATE, 1); 
} 
//last day of week 
end = dt.format(cal1.getTime()); 
System.out.println(end);