java 某年某月第几周第几天 是几月几号

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

public class DateUtil {
 
 /**
  * 
  * @param year          年份
  * @param month         月份
  * @param weekOfMonth   这个月的第几周
  * @param dayOfWeek     星期几
  * @return
  */
 public static String weekdatetodata(int year,int month,int weekOfMonth,int dayOfWeek){
  Calendar c = Calendar.getInstance();
  //计算出 x年 y月 1号 是星期几
  c.set(year, month-1, 1);
  
  //如果i_week_day =1 的话 实际上是周日  
  int i_week_day = c.get(Calendar.DAY_OF_WEEK);
  
  int sumDay = 0;
  //dayOfWeek+1 就是星期几(星期日 为 1)
  if(i_week_day == 1){
   sumDay = (weekOfMonth-1)*7 + dayOfWeek+1;
  }else{
   sumDay = 7-i_week_day+1 +  (weekOfMonth-1)*7 + dayOfWeek +1;
  }
  //在1号的基础上加上相应的天数
  c.set(Calendar.DATE,  sumDay);
  SimpleDateFormat sf2 = new SimpleDateFormat("yyyy-MM-dd");
  return sf2.format(c.getTime());
 } 
 public static void main(String[] args) {
  //2009年1月 第二周星期三 得到2009-01-14
  System.out.println(weekdatetodata(2009, 1, 2, 3));
  //2009年2月 第二周星期三 得到2009-02-11
  System.out.println(weekdatetodata(2009, 2, 2, 3));
  //2009年4月 第二周星期三 得到2009-04-15
  System.out.println(weekdatetodata(2009, 4, 2, 3));
  //2009年2月 第三周星期四 得到2009-02-19
  System.out.println(weekdatetodata(2009, 2, 3, 4));
 }
}

 

你可能感兴趣的:(java 某年某月第几周第几天 是几月几号)