String str = "2003-7-13"; SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); Date date = formatter.parse(str); Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("CTT")); calendar.setTime(date); int weekNo = calendar.get(Calendar.WEEK_OF_YEAR); int weekIndex = calendar.get(Calendar.DAY_OF_WEEK);//西方是周日为一周的第一天 Date dateBegin = new Date(); Date dateEnd = new Date(); dateBegin.setTime(date.getTime()-(long)(weekIndex-1)*24*60*60*1000); dateEnd.setTime(date.getTime()+(long)(7-weekIndex)*24*60*60*1000); System.out.println("第"+weekNo+"周"); System.out.println("第"+weekIndex+"天"); System.out.println(formatter.format(dateBegin)); System.out.println(formatter.format(dateEnd));
import java.util.Date; import java.text.SimpleDateFormat; import java.util.Calendar; import java.text.DateFormat; public class test { public static void main(String args[]){ Date date= new Date(); Calendar calendar = Calendar.getInstance(); int week = calendar.get(Calendar.DAY_OF_WEEK)-1; Date dateBegin = new Date(); Date dateEnd = new Date(); DateFormat shortDateFormat = DateFormat.getDateInstance(0); dateBegin.setTime(date.getTime()-(long)(week)*24*60*60*1000); String dateBeginStr = shortDateFormat.format(dateBegin); String dateEndStr = shortDateFormat.format(dateEnd); dateEnd.setTime(date.getTime()+(long)(7-week)*24*60*60*1000); System.out.println("今天是当年的第"+calendar.get(Calendar.WEEK_OF_YEAR )+"周"); System.out.println("今天是当月的"+calendar.get(calendar.DAY_OF_WEEK_IN_MONTH)+"周"); System.out.println("今天是星期"+week); System.out.println("本周的开始时间是"+dateBeginStr); System.out.println("本周的结束时间是"+dateEndStr); } }
我写过一个javascript的。算法差不多的。 请看下面。 if(document.RequestForm.Report_Param_StatisticType.value=="周") { var theyear = parseInt(document.RequestForm.yearselect.value);//你选择的年份 var theweek = parseInt(document.RequestForm.timeselect.value);//你选择的第几周 var yearday =new Date(theyear,0,1); var thetime = Date.parse(yearday); thetime=thetime+ 24*3600*1000*7*theweek; var tempday = new Date(thetime); var daytime = 24*3600*1000; var weekday = tempday .getDay(); var theday; switch(weekday) { case 0:theday = new Date(thetime+daytime); break; case 1:theday = new Date(thetime); break; default:theday = new Date(thetime+daytime*(8-weekday)); } var beginday = theday; var endday = new Date(theday.getYear(),theday.getMonth(),theday.getDate()+6,23,59,59); document.RequestForm.Report_Param_StatisticBeginTime.value = dayset(beginday);//这周的开始时间 document.RequestForm.Report_Param_StatisticEndTime.value = dayset(endday); //这周的结束时间
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date date = formatter.parse(str);
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("CTT"));
calendar.setTime(date);
int weekNo = calendar.get(Calendar.WEEK_OF_YEAR);
int weekIndex = calendar.get(Calendar.DAY_OF_WEEK);//西方是周日为一周的第一天
Date dateBegin = new Date();
Date dateEnd = new Date();
dateBegin.setTime(date.getTime()-(long)(weekIndex-1)*24*60*60*1000);
dateEnd.setTime(date.getTime()+(long)(7-weekIndex)*24*60*60*1000);
System.out.println("第"+weekNo+"周");
System.out.println("第"+weekIndex+"天");
System.out.println(formatter.format(dateBegin));
System.out.println(formatter.format(dateEnd));
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.text.DateFormat;
public class test { public static void main(String args[]){
Date date= new Date();
Calendar calendar = Calendar.getInstance();
int week = calendar.get(Calendar.DAY_OF_WEEK)-1;
Date dateBegin = new Date();
Date dateEnd = new Date();
DateFormat shortDateFormat = DateFormat.getDateInstance(0);
dateBegin.setTime(date.getTime()-(long)(week)*24*60*60*1000);
String dateBeginStr = shortDateFormat.format(dateBegin);
String dateEndStr = shortDateFormat.format(dateEnd);
dateEnd.setTime(date.getTime()+(long)(7-week)*24*60*60*1000);
System.out.println("今天是当年的第"+calendar.get(Calendar.WEEK_OF_YEAR )+"周");
System.out.println("今天是当月的"+calendar.get(calendar.DAY_OF_WEEK_IN_MONTH)+"周");
System.out.println("今天是星期"+week);
System.out.println("本周的开始时间是"+dateBeginStr);
System.out.println("本周的结束时间是"+dateEndStr); }
}
String dateEndStr = shortDateFormat.format(dateEnd);
dateEnd.setTime(date.getTime()+(long)(7-week)*24*60*60*1000);
换一下位置。
public static void main(String args[]) throws Exception{
Calendar calendar = Calendar.getInstance( );
calendar.set( Calendar.YEAR, 2003 );
calendar.set( Calendar.WEEK_OF_YEAR, 20 );
calendar.set( Calendar.DAY_OF_WEEK, 0 );
System.out.println( calendar.get( Calendar.MONTH ) );
System.out.println( calendar.get( Calendar.DATE ) );
}
}
这个是得到第一天的方法,其他的第几天,你只要改动
calendar.set( Calendar.DAY_OF_WEEK, 0 );
这一句里面的int值就行了
请看下面。
if(document.RequestForm.Report_Param_StatisticType.value=="周")
{
var theyear = parseInt(document.RequestForm.yearselect.value);//你选择的年份
var theweek = parseInt(document.RequestForm.timeselect.value);//你选择的第几周
var yearday =new Date(theyear,0,1);
var thetime = Date.parse(yearday);
thetime=thetime+ 24*3600*1000*7*theweek;
var tempday = new Date(thetime);
var daytime = 24*3600*1000;
var weekday = tempday .getDay();
var theday;
switch(weekday)
{
case 0:theday = new Date(thetime+daytime);
break;
case 1:theday = new Date(thetime);
break;
default:theday = new Date(thetime+daytime*(8-weekday));
}
var beginday = theday;
var endday = new Date(theday.getYear(),theday.getMonth(),theday.getDate()+6,23,59,59);
document.RequestForm.Report_Param_StatisticBeginTime.value = dayset(beginday);//这周的开始时间 document.RequestForm.Report_Param_StatisticEndTime.value = dayset(endday); //这周的结束时间
calendar.set( Calendar.YEAR, 2003 (是表示2003年吗?));
calendar.set( Calendar.WEEK_OF_YEAR, 20(是不是表示第21周?) );
calendar.set( Calendar.DAY_OF_WEEK, 0 );
System.out.println( calendar.get( Calendar.MONTH +1)(需要加1吗?) );
System.out.println( calendar.get(lendar.DATE )+1(需要加吗?);
不需要加一System.out.println( calendar.get( Calendar.MONTH +1)(需要加1吗?) );
需要calendar.set( Calendar.WEEK_OF_YEAR, 20(是不是表示第21周?) );
不是,就是20calendar.set( Calendar.YEAR, 2003 (是表示2003年吗?));
是calendar.set( Calendar.DAY_OF_WEEK, 0 );
这个地方更正一下
calendar.set( Calendar.DAY_OF_WEEK, 1 );
才是这个星期的第一天(也就是星期天)
你说结果都不一致
那么你试试这个例子
import java.util.*;public class Test2 {
public static void main(String args[]) throws Exception{
Calendar calendar = Calendar.getInstance( );
calendar.set( Calendar.YEAR, 2003 );
calendar.set( Calendar.WEEK_OF_YEAR, 2 );
calendar.set( Calendar.DAY_OF_WEEK, 1 );
System.out.println( calendar.get( Calendar.MONTH ) + 1 );
System.out.println( calendar.get( Calendar.DATE ) );
}
}
最后应该是1月五号
也就是今年的一月五号,你可以看看日历·····
calendar.set( Calendar.WEEK_OF_YEAR, 2 );都没有用了。打印的始终是当前日期的所在周的每一天的日期。
请测试过再说,
你要觉得set( Calendar.Week_of_year。。
那些没有用的话,那你试试这个例子
import java.util.*;public class Test2 {
public static void main(String args[]) throws Exception{
Calendar calendar = Calendar.getInstance( );
calendar.set( Calendar.YEAR, 2003 );
calendar.set( Calendar.WEEK_OF_YEAR, 2 );
calendar.set( Calendar.DAY_OF_WEEK, 1 );
System.out.println( calendar.get( Calendar.MONTH ) + 1 );
System.out.println( calendar.get( Calendar.DATE ) );
}
}看看是不是1月5号