本文实例为大家分享了java编写全年考勤日历的具体代码,供大家参考,具体内容如下

JAVA代码:

package com.wp.action;
 
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;
 
public class CalendarAction extends MainAction {
 
 private static final long serialVersionUID = 1L;
 
 private int maxCols;
 private String html;
 private String clickDate;
 
 public String getClickDate() {
 return clickDate;
 }
 
 public void setClickDate(String clickDate) {
 this.clickDate = clickDate;
 }
 
 public String init() {
 Calendar cal = Calendar.getInstance();
 int month = cal.get(Calendar.MONTH) + 1;
 initMaxCols();
 html = createTbl();
 
 return SUCCESS;
 }
 
 private void initMaxCols() {
 // 每行开头灰色的格数
 int headDisabledDays;
 // 当月的天数
 int oneMonthDays;
 Calendar cal = Calendar.getInstance();
 cal.set(Calendar.DAY_OF_MONTH, 1);
 
 for (int i = 0; i < 12; i++) {
 
  if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
  // 周日空六格
  headDisabledDays = 6;
  } else {
  headDisabledDays = cal.get(Calendar.DAY_OF_WEEK)
   - Calendar.MONDAY;
  }
 
  oneMonthDays = cal.getActualMaximum(Calendar.DAY_OF_MONTH);
  if (headDisabledDays + oneMonthDays > maxCols) {
  maxCols = headDisabledDays + oneMonthDays;
  }
  cal.add(Calendar.MONTH, 1);
 }
 
 }
 
 private String createTbl() {
 StringBuffer html = new StringBuffer();
 String[] weekdays = { \"一\", \"二\", \"三\", \"四\", \"五\", \"六\", \"日\" };
 SimpleDateFormat formatTd = new SimpleDateFormat(\"yyyyMMdd\");
 SimpleDateFormat formatHeader = new SimpleDateFormat(\"yyyy年MM月\");
 SimpleDateFormat format  = new SimpleDateFormat(\"yyyy年MM月dd日\");
 HashMap<String, String> map = getCalendarDetail();
 
 // 每行开头灰色的格数
 int headDisabledDays;
 
 // html.append(\"<table id=\'calTbl\'>\\r\\n\");
 html.append(\"<tr>\\r\\n\");
 html.append(\"<th></th>\\r\\n\");
 for (int col = 0; col < maxCols; col++) {
  html.append(\"<th>\");
  html.append(weekdays[col % weekdays.length]);
  html.append(\"</th>\\r\\n\");
 }
 html.append(\"</tr>\\r\\n\");
 Calendar cal = Calendar.getInstance();
 int month = cal.get(Calendar.MONTH);
 for (int months = 0; months < 12; months++) {
  html.append(\"<tr>\\r\\n\");
  String s;
  s = formatHeader.format(cal.getTime());
  html.append(\"<td class=\'rowHeader\'>\" + s + \"</td>\\r\\n\");
  
  cal.set(Calendar.DAY_OF_MONTH, 1);
  if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
  // 周日空六格
  headDisabledDays = 6;
  } else {
  headDisabledDays = cal.get(Calendar.DAY_OF_WEEK)
   - Calendar.MONDAY;
  }
  cal.add(Calendar.DAY_OF_MONTH, -headDisabledDays);
 
  for (int col = 0; col < maxCols; col++) {
 
  html.append(\"<td id=\'\");
 
  String date = formatTd.format(cal.getTime());
  html.append(date + \"\' \");
  // if (headDisabledDays-- > 0) {
  // html.append(\"class=\'disabledTd\'\");
  // }else
  if (month != cal.get(Calendar.MONTH)) {
   html.append(\"class=\'disabledTd\'\");
  
  } else if (map.containsKey(formatTd.format(cal.getTime()))) {
   int type = Integer.parseInt(map.get(formatTd.format(cal
    .getTime())));
   if(type == 1){
   //html.append(\"class=\'holidayTd\'\");
   }else if(type == 2){
   html.append(\"class=\'holidayTd\'\");
   }
  } else if (cal.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY
   || cal.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) {
   html.append(\"class=\'weekendTd\'\");
  } else {
   html.append(\"class=\'generalTd\'\");
  }
  html.append(\"  =\'\" + format .format(cal.getTime())
   + \"\'\");
  html.append(\">\");
 
  html.append(cal.get(Calendar.DAY_OF_MONTH));
  html.append(\"</td>\\r\\n\");
  cal.add(Calendar.DAY_OF_MONTH, 1);
 
  }
 
  html.append(\"</tr>\\r\\n\");
  if (month == cal.get(Calendar.MONTH)) {
  cal.add(Calendar.MONTH, 1);
  }
  month = cal.get(Calendar.MONTH);
 }
 // html.append(\"</table>\\r\\n\");
 return html.toString();
 }
 
 public String getHtml() {
 return html;
 }
 
 public void setHtml(String html) {
 this.html = html;
 }
 
 private HashMap<String, String> getCalendarDetail() {
 HashMap<String, String> map;
 map = new HashMap<String, String>();
 map.put(\"20150404\", \"2\");
 map.put(\"20150405\", \"2\");
 map.put(\"20150406\", \"2\");
 map.put(\"20150501\", \"2\");
 map.put(\"20150502\", \"2\");
 map.put(\"20150503\", \"2\");
 map.put(\"20150622\", \"2\");
 map.put(\"20151001\", \"2\");
 map.put(\"20151002\", \"2\");
 map.put(\"20151003\", \"2\");
 
 return map;
 }
 public String dateCellClick(){
 
 return SUCCESS;
 }
}

action配置:

<action name=\"calendar\" class=\"com.wp.action.CalendarAction\" method=\"init\">
   <result name=\"success\" type=\"json\"></result>
</action>

HTML代码:

<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\" \"http://www.w3.org/TR/html4/loose.dtd\">
<%@ page language=\"java\" contentType=\"text/html; charset=utf-8\"
 pageEncoding=\"utf-8\"%>
<%
 String path = request.getContextPath();
 String  Path = request.getScheme() + \"://\"
  + request.getServerName() + \":\" + request.getServerPort()
  + path;
%>
<%@taglib prefix=\"s\" uri=\"/struts-tags\"%>
<html>
 <STYLE type=\"text/css\">
  .disabledTd{
  background-color:gray;
  }
  .weekendTd{
  background-color:yellow;
  }
  .holidayTd{
  background-color:green;
  }
  .generalTd{
  background-color:white;
  }
  #calTbl{
  font-family: verdana,arial,sans-serif;
  font-size:13px;
  color:#333333;
  border-width: 1px;
  border-color: #a9c6c9;
  border-collapse: collapse;
  }
  #calTbl th{
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #a9c6c9;
  background-color:olive;
  }
  #calTbl td {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #a9c6c9;
  }
  .rowHeader{
  background-color:olive;
  }
 </STYLE>
 
 <head>
 
 <  http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
 < >Login page</ >
 <  rel=\"stylesheet\" type=\"text/css\" media=\"screen\"
  href=\"<%= Path%>/html/styles/styles.css\" rel=\"external nofollow\" />
 <  src=\"<%= Path%>/html/ s/common.js\"
  type=\"text/ \"></ >
 <  src=\"<%= Path%>/html/ s/jquery.js\"
  type=\"text/ \"></ >
 <  src=\"<%= Path%>/html/ s/jquery.json-2.2.min.js\"
  type=\"text/ \"></ >
 <  src=\"<%= Path%>/html/ s/jquery.ui.custom.js\"
  type=\"text/ \"></ >
 <  src=\"<%= Path%>/html/ s/ .js\"
  type=\"text/ \"></ >
  <  type=\"text/ \">
  $(document).ready(function(){
  var checkType = 0;
  $.post(\'calendar\',{},function(data,status)
  {
   if(data != null && data.html != null && data.html != \"\"){
   $(\"#calTbl\").html( data.html);
   $(\"#calTbl td\").click(tdClick);
   $(\"#checkType input\").click(typeCheck);
   }
  }).error(function(){
   
  });
 
  var tdClick = function(){
  
   if(this.className == \'rowHeader\' || this.className == \'disabledTd\'){
   return;
   }
   if(checkType != null && checkType != \"\" && checkType != 0){
   if(checkType == 1){   
    this.style.backgroundColor=\"white\";
   }else if(checkType == 2){    
    this.style.backgroundColor=\"yellow\";
   }else if(checkType == 3){    
    this.style.backgroundColor=\"green\";
   }
   }
  };
  var typeCheck = function(){
   checkType = this.value;
  };
  
  
  });
  
 </ >
 </head>
 <body>
 <div id=\"calendar\">
  <table id=\"calTbl\"></table>  
 </div>
 <div>
  <table id=\"checkType\">
  <tr>
   <td style=\"background-color: white;\"> <input type=\"radio\" name=\"type\" value=\"1\"> </td>
   <td style=\"background-color: yellow;\"><input type=\"radio\" name=\"type\" value=\"2\"></td>
   <td style=\"background-color: green;\"> <input type=\"radio\" name=\"type\" value=\"3\"></td>
  </tr>
  </table>
 </div> 
 </body>
</html>

效果如下

\"\"

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

收藏 打印