按年生成周列表,切换年份是周列表根据所选年份变动

本文只提供编程思想,具体代码要根据需要修改。


jsp :



Calendar calendar = DateUtils.getCalendar();

// Current Week
int curWeek = calendar.get(Calendar.WEEK_OF_YEAR);
// Current Month
int curMonth = calendar.get(Calendar.MONTH);
curMonth++;
// Current Year
int curYear = calendar.get(Calendar.YEAR);
int actualYear = DateUtils.getActualYear();


SimpleDateFormat yfmt = new SimpleDateFormat("yyyy");
int firstSample = 0 ;
int lastSample = 0 ;
    try{

// 获取数据库指定时间
    firstSample = Integer.parseInt(yfmt.format(econf.getFirstSample())); 
    lastSample = Integer.parseInt(yfmt.format(econf.getLastSample()));
    }catch (Exception e){
    firstSample = lastSample = curYear;
    }
    StringBuffer yearOptions = new StringBuffer();
    for(int year = firstSample; year <= lastSample; year++) {
    yearOptions.append("<option value='" + year + "'");
    if( year == curYear )
    yearOptions.append(" selected");
    yearOptions.append(">" + year + "</option>\n");
    }

    StringBuffer yearOptionsForWeekly = new StringBuffer();
for(int year = firstSample<actualYear?firstSample:actualYear; year <= (lastSample>actualYear?lastSample:actualYear); year++) {
yearOptionsForWeekly.append("<option value='" + year + "'");
if( year == actualYear )
yearOptionsForWeekly.append(" selected");
yearOptionsForWeekly.append(">" + year + "</option>\n");
}


<td class="td">
<select name="week" id="week">
<%=DateUtils.getWeeklyOptions(language,actualYear,curWeek) %>
</select >
&nbsp;
<select id="w_year" name="w_year" onChange="changeYear(this.value)"><%=yearOptionsForWeekly.toString()%></select>
&nbsp;
<img src="images/actions/calculate_black.png" style="cursor: pointer" onclick="getReport('weekly','day','w_year',document.getElementById('week').value);"/>
</td>



java 文件 : 


package com.carel.supervisor.base.conversion;


import java.text.*;
import java.util.*;


import com.carel.supervisor.dataaccess.language.LangMgr;
import com.carel.supervisor.dataaccess.language.LangService;




public class DateUtils
{
    private DateUtils()
    {
    }


    public static Date resetTime(Date date)
    {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.MILLISECOND, 0);
        cal.set(Calendar.SECOND, 0);
        cal.set(Calendar.MINUTE, 0);
        cal.set(Calendar.HOUR_OF_DAY, 0);
        cal.set(Calendar.AM_PM, Calendar.AM);


        return cal.getTime();
    }


    public static Date resetDate(Date date)
    {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.DAY_OF_MONTH, 0);
        cal.set(Calendar.MONTH, 0);
        cal.set(Calendar.YEAR, 0);


        return cal.getTime();
    }


    public static Date setTime(Date date, int hours, int minutes, int seconds)
    {
        Calendar cal = Calendar.getInstance();
        cal.setTime(date);
        cal.set(Calendar.HOUR_OF_DAY, hours);
        cal.set(Calendar.MINUTE, minutes);
        cal.set(Calendar.SECOND, seconds);


        return cal.getTime();
    }


    public static Date createDate(int day, int month, int year)
    {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.MONTH, month - 1);
        cal.set(Calendar.DAY_OF_MONTH, day);


        return resetTime(cal.getTime());
    }


    public static Date createDayWeek(int day, int hours, int minutes,
        int seconds)
    {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.DAY_OF_WEEK, day);
        cal.set(Calendar.HOUR_OF_DAY, hours);
        cal.set(Calendar.MINUTE, minutes);
        cal.set(Calendar.SECOND, seconds);


        return cal.getTime();
    }


    public static Date createDayMonth(int day, int hours, int minutes,
        int seconds)
    {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.DAY_OF_MONTH, day);
        cal.set(Calendar.HOUR_OF_DAY, hours);
        cal.set(Calendar.MINUTE, minutes);
        cal.set(Calendar.SECOND, seconds);


        return cal.getTime();
    }


    public static Date createDayYear(int year, int month, int day, int hours,
        int minutes, int seconds)
    {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.MONTH, month - 1);
        cal.set(Calendar.DAY_OF_MONTH, day);
        cal.set(Calendar.HOUR_OF_DAY, hours);
        cal.set(Calendar.MINUTE, minutes);
        cal.set(Calendar.SECOND, seconds);


        return cal.getTime();
    }


    public static Date createDate(int seconds, int minutes, int hours, int day,
        int month, int year)
    {
        Calendar cal = Calendar.getInstance();
        cal.set(Calendar.YEAR, year);
        cal.set(Calendar.MONTH, month - 1);
        cal.set(Calendar.DAY_OF_MONTH, day);
        cal.set(Calendar.HOUR_OF_DAY, hours);
        cal.set(Calendar.MINUTE, minutes);
        cal.set(Calendar.SECOND, seconds);


        return cal.getTime();
    }


    public static String date2String(Date date, String formParam)
    {
        String code = "";
    if (null != date)
        {
        SimpleDateFormat formatter = new SimpleDateFormat(formParam);
            code = formatter.format(date);
        }
    return code;
    }
    
    public static int maxWeekNumOfYear( int year){
    Calendar calendar = getCalendar();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, 11);
calendar.set(Calendar.DAY_OF_MONTH, 31);
int maxWeek = calendar.get(Calendar.WEEK_OF_YEAR);
if(maxWeek ==1){
calendar.set(Calendar.DAY_OF_WEEK,Calendar.MONDAY);
calendar.add(Calendar.DAY_OF_MONTH, -1);
maxWeek = calendar.get(Calendar.WEEK_OF_YEAR);
}
    return maxWeek;
    }
    
    public static StringBuffer getWeeklyOptions(String language,  int year , int curWeek ){
    LangService lan = LangMgr.getInstance().getLangService(language);
    String[] astrMonthNames = {
lan.getString("cal", "january"),
lan.getString("cal", "february"),
lan.getString("cal", "march"),
lan.getString("cal", "april"),
lan.getString("cal", "may"),
lan.getString("cal", "june"),
lan.getString("cal", "july"),
lan.getString("cal", "august"),
lan.getString("cal", "september"),
lan.getString("cal", "october"),
lan.getString("cal", "november"),
lan.getString("cal", "december")
};
    StringBuffer sb = new StringBuffer();
    int maxWeek = maxWeekNumOfYear(year);
    Calendar cal = getCalendar();
    cal.set(Calendar.YEAR,year);
    String strselect ;
    String strWeek;
    Calendar temp_nextYear;
    curWeek = curWeek> maxWeek?maxWeek:curWeek;
    for(int iWeek = 1; iWeek <= maxWeek; iWeek++) {
       if(iWeek==53){
        cal.add(Calendar.DATE, 1);
}else{
cal.set(Calendar.WEEK_OF_YEAR, iWeek);
cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
}
temp_nextYear = (Calendar)cal.clone();
strWeek = cal.get(Calendar.DAY_OF_MONTH)
+ " " + astrMonthNames[cal.get(Calendar.MONTH)];
cal.add(Calendar.DAY_OF_YEAR, 6);
if(iWeek >= 50 && temp_nextYear.get(Calendar.MONTH) ==11){
int w = temp_nextYear.get(Calendar.WEEK_OF_YEAR);
if(w==1){
break;
}
}else if(iWeek >= 50 && temp_nextYear.get(Calendar.YEAR)>year){
break;
}
strWeek += " - " + cal.get(Calendar.DAY_OF_MONTH)
+ " " + astrMonthNames[cal.get(Calendar.MONTH)];
strselect = (iWeek==curWeek?" selected":"");
sb.append("<option value=\""+iWeek+"\""+ strselect +">"+strWeek+"</option>");
}
    return sb;
    }
    
    
    public static int getActualYear (){
    Calendar cal =  getCalendar();
    int actualYear = cal.get(Calendar.YEAR);
    if(cal.get(Calendar.MONTH) ==11){
    if(cal.get(Calendar.WEEK_OF_YEAR)==1){
    actualYear ++;
    }
    }
    if(cal.get(Calendar.MONTH) ==0){
    if(cal.get(Calendar.WEEK_OF_YEAR)>40){
    actualYear --;
    }
    }
    return actualYear;
    }
    
    public static Calendar getCalendar(){
    Calendar cal = Calendar.getInstance();
    cal.setMinimalDaysInFirstWeek(4);
    cal.setFirstDayOfWeek(Calendar.MONDAY);
    return cal ; 
    }
    
    
}


猜你喜欢

转载自blog.csdn.net/longbinliu/article/details/50517532