需要指导如何更改the UI of the multiple select of weekly first dates中所示的每个选项的第一个日期的值。每个日期包含周数value contains in each option的值。预期用途是允许用户选择多个第一个日期,然后选择一个年份,之后,他们点击搜索按钮。我尝试了DatesGetTotalDaysInMonth和Dates。getWeekStartDate,但它得到了错误,我将详细说明如下:
在报告中。jsp:
out.println("<div class='grid_3' id='hidden_div' style='display:none;'>");
out.println("<p>");
out.println("<select name='weekStart' id= 'weekStart' style='width:150px;' multiple='multiple' >");
String weekDates[]={"01-02","01-09","01-16","01-23","01-30","02-06","02-13","02-20","02-27",
"03-06","03-13","03-20","03-27","04-03","04-10","04-17","04-24","05-01","05-08",
"05-15","05-22","05-29","06-05","06-12","06-19","06-26","07-03","07-10","07-17","07-24",
"07-31","08-07","08-14","08-21","08-28","09-04","09-11","09-18","09-25","10-02","10-09","10-16",
"10-23","10-30","11-06","11-13","11-20","11-27","12-04","12-11","12-18","12-25"};
int numWeeksPerMth[] = {5, 4, 4, 4, 5,4, 4, 5, 4, 5, 4, 4};
// int numOfWeek[]= {"Jan1", "Jan2", "Jan3", "Jan4", "Jan5", "Feb6", "Feb7", "Feb8", "Feb9", "Mar10", "Mar11", "Mar12", "Mar13", "Apr14", "Apr15", "Apr16", "Apr17",
// "May18", "May19", "May20", "May21", "May22", "Jun23", "Jun24", "Jun25", "Jun26", "Jul27", "Jul28", "Jul29", "Jul30",
// "Aug31", "Aug32", "Aug33", "Aug34", "Aug35", "Sep36", "Sep37", "Sep38", "Sep39", "Oct40", "Oct41", "Oct42", "Oct43", "Oct44",
// "Nov45", "Nov46", "Nov47", "Nov48", "Dec49", "Dec50", "Dec51", "Dec52"};
String weekNum[]= {"Jan1", "Jan2", "Jan3", "Jan4", "Jan5", "Feb6", "Feb7", "Feb8", "Feb9", "Mar10", "Mar11", "Mar12", "Mar13", "Apr14", "Apr15", "Apr16", "Apr17",
"May18", "May19", "May20", "May21", "May22", "Jun23", "Jun24", "Jun25", "Jun26", "Jul27", "Jul28", "Jul29", "Jul30",
"Aug31", "Aug32", "Aug33", "Aug34", "Aug35", "Sep36", "Sep37", "Sep38", "Sep39", "Oct40", "Oct41", "Oct42", "Oct43", "Oct44",
"Nov45", "Nov46", "Nov47", "Nov48", "Dec49", "Dec50", "Dec51", "Dec52"};
for (int k = 1; k < weekNum.length; k++){
out.println("<option value =" +k+">"+weekDates[k]+"</option>");
}
out.println("</select>");
out.println("</p>");
out.println("<p>");
out.println("<label>Year</label>");
// out.println("<td>");
out.println("<select name='year' id='year' class='mediumSelect'>");
String currentYear = Dates.getTimeStamp("yyyy");
for(int years=2020;years<(Integer.parseInt(currentYear)+5);years++) {
if(Integer.parseInt(currentYear) == years){
out.println("<option value='"+years+"' selected>"+ years +"</option>");
}else{
out.println("<option value='"+years+"'>"+ years +"</option>");
}
}
out.println("</select>");
// out.println("</td>");
out.println("</p>");
out.println("</div>");
//this is in the action page(report_act.jsp)
if(!monthStart.equals("")){
for(int t=1;t<(totalMonth);t++){
startDate=""+monthStart+"-01";
int totalDays = Dates.getTotalDaysInMonth(monthEnd+"-"+t+"-01");
endDate=""+monthEnd+"-"+totalDays;
}
response.sendRedirect(""+namePage+".jsp?millId="+millId+"&stationStatus="+stationStatus+"&inspectorId="+inspectorId+"&roundIdList="+roundIdList+"&reportType="+reportType+"&jobPosition="+jobPosition+"&scheduleId="+scheduleId+"&filterType="+filterType+"&monthStart="+monthStart+"&monthEnd="+monthEnd+"&startDate="+startDate+"&endDate="+endDate+"&roundId="+roundId+"&stationId="+stationId+"&sequenceId="+sequenceId+"&pageNo="+pageNo+"");
}
else{
for(int t=1;t<=(totalWeek);t++){
startDate= year+"-"+weekStart;
//String weekDate = Dates.getDayOfWeek(weekStart+"-"+t);
//endDate= year+"-"+weekStart+"-"+weekDate;
LogFunction.loginfo(Dates.getDayOfWeek(weekStart+"-"+t));
}
response.sendRedirect(""+namePage+".jsp?millId="+millId+"&stationStatus="+stationStatus+"&inspectorId="+inspectorId+"&roundIdList="+roundIdList+"&reportType="+reportType+"&jobPosition="+jobPosition+"&scheduleId="+scheduleId+"&filterType="+filterType+"&weekStart="+weekStart+"&startDate="+startDate+"&endDate="+endDate+"&roundId="+roundId+"&stationId="+stationId+"&sequenceId="+sequenceId+"&pageNo="+pageNo+"");
}
// the method i used in Dates.java
public static String getDayOfWeek(String dateString) {
// for GMT+8:00
//gets date plus or minus x months
java.util.Date date=new java.util.Date();
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
try{
date=df.parse(dateString);
}catch(Exception e){}
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
String datestr = Integer.toString(calendar.get(Calendar.DAY_OF_WEEK));
// calendar.add(Calendar.MONTH,x);
// df = new SimpleDateFormat("yyyy-MM-dd");
// String datestr = df.format(calendar.getTime());
return datestr;
}
1条答案
按热度按时间bmvo0sr51#
Java.时间
***java.util***日期时间API及其格式化API
SimpleDateFormat
已经过时,容易出错,建议完全停止使用,改用modern date-time API。使用java.time(现代日期-时间API)的解决方案
输出:
从**Trail: Date Time**了解有关现代日期-时间API的更多信息。