本文只提供编程思想,具体代码要根据需要修改。
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 >
<select id="w_year" name="w_year" onChange="changeYear(this.value)"><%=yearOptionsForWeekly.toString()%></select>
<img src="images/actions/calculate_black.png" style="cursor: pointer" οnclick="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 ;
}
}