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));
 }
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值