最近花了不少時間在日期的取得上= =
只能說自已…功力不足…


問題是這樣的
我想知道某日期的該週其起訖日期為何
爬文看了好久,終於找到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()));

arrow
arrow
    全站熱搜

    蜜絲安 發表在 痞客邦 留言(0) 人氣()