最近花了不少時間在日期的取得上= =
只能說自已…功力不足…
問題是這樣的
我想知道某日期的該週其起訖日期為何
爬文看了好久,終於找到JAVA的寫法了
JSP和JAVA語法一模沒兩樣,改一下就OK了
語法如下:
/**
* 根據輸入的年月週數來取該周首天
* @param year 年份(> 0)
* @param month 月份(1-12)
* @param week 當月週數(1-5)
* @return 該周第一天(週日)
*/
public static void getFirstDayByMonthWeek(int year,int month,int week){
if (year <= 0){
System.out.println( "年份要大於0! ");
return;
}
if (month < 1 || month > 12){
System.out.println( "月份要[1-12]! ");
return;
}
if (week < 1 || week > 5){
System.out.println( "周要[1-5]! ");
return;
}
DateFormat df = new SimpleDateFormat( "yyyy-MM-dd ");
Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month - 1);
c.set(Calendar.WEEK_OF_MONTH,week);
//取得當月最後一天
int lastday = getTheLastDay(year,month);
if (lastday <= (week-1)*7){
System.out.println( "該月沒有第[ " + week + "]周! ");
return;
}
//取得该周第一天的weekday(周日=1)
int firstDayofweek = c.getFirstDayOfWeek();
int lastDayofweek = firstDayofweek + 6;
//該周第一天日期
Calendar c1 = Calendar.getInstance();
c1.set(Calendar.YEAR, year);
c1.set(Calendar.MONTH, month - 1);
c1.set(Calendar.WEEK_OF_MONTH,week);
c1.set(Calendar.DAY_OF_WEEK, firstDayofweek);
Date d1 = new Date(c1.getTimeInMillis());
System.out.println( "該周第一天是[ " + df.format(d1) + "] ");
//該周最後一天日期
Calendar c2 = Calendar.getInstance();
c2.set(Calendar.YEAR, year);
c2.set(Calendar.MONTH, month - 1);
c2.set(Calendar.WEEK_OF_MONTH,week);
c2.set(Calendar.DAY_OF_WEEK, lastDayofweek);
Date d2 = new Date(c2.getTimeInMillis());
System.out.println( "該周最後一天是[ " + df.format(d2) + "] ");
}
記得在JSP import時,要import 三個class,
java.text.* (SimpleDateFormat用)
java.util.Date (因為同時import java.sql.* 及 java.util.* 時,使用Date 會有error,因此只要加入java.util.Date 就可以了)
java.util.* (Calendar 用)
延申閱讀
取得本月的第一天和最后一天
要取得本月的第一天和最後一天可以使用Calendar.roll來達成
1
//
本月的第一天
2
Calendar calendar
=
new
GregorianCalendar();
3
calendar.set( Calendar.DATE,
1
);
4
SimpleDateFormat simpleFormate
=
new
SimpleDateFormat(
"
yyyy-MM-dd
"
);
5
System.out.println(simpleFormate.format(calendar.getTime()));
6
7
//
本月的最后一天
8
Calendar calendar
=
new
GregorianCalendar();
9
calendar.set( Calendar.DATE,
1
);
10
calendar.roll(Calendar.DATE,
-
1
);
11
SimpleDateFormat simpleFormate
=
new
SimpleDateFormat(
"
yyyy-MM-dd
"
);
12
System.out.println(simpleFormate.format(calendar.getTime()));