Java如何得到指定时间段中的第几周第几天的日期?

2024-11-30 06:48:57
推荐回答(3个)
回答1:

第二周的周一??不完整周也算第一周???
我理解你的问题是第二个周一的日期是多少??

import java.util.Calendar;

public class Test {

/**
* @param args
*/
public static void main(String[] args) throws Exception {

Calendar c_begin = Calendar.getInstance();
Calendar c_end = Calendar.getInstance();
c_begin.set(2010, 3, 1); //Calendar的月从0-11,所以4月是3.
c_end.set(2010, 4, 20); //Calendar的月从0-11,所以5月是4.

int count = 0;
while(c_begin.before(c_end)){
//System.out.println(new java.sql.Date(c_begin.getTime().getTime()));
if(c_begin.get(Calendar.DAY_OF_WEEK)==Calendar.MONDAY){
count++;
}
if(count == 2){
System.out.println(c_begin.get(Calendar.YEAR)+"年"+(c_begin.get(Calendar.MONTH)+1)+"月"+c_begin.get(Calendar.DATE)+"日");
break;
}

c_begin.add(Calendar.DAY_OF_YEAR, 1);
}

}
}

回答2:

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

回答3:

知道起始日期,再加上想推后的天数,不就知道具体日期了吗?
比如2010年04月01日到2010年05月20日中,第二周的周一的日期不就是2010年04月08日吗?