java编写全年考勤日历

 更新时间:2018年11月29日 12:04:04   作者:始于千里之外  
这篇文章主要为大家详细介绍了java编写全年考勤日历,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文实例为大家分享了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 formatTitle = 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(" title='" + formatTitle.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 basePath = 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>
 
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 <title>Login page</title>
 <link rel="stylesheet" type="text/css" media="screen"
  href="<%=basePath%>/html/styles/styles.css" rel="external nofollow" />
 <script src="<%=basePath%>/html/scripts/common.js"
  type="text/javascript"></script>
 <script src="<%=basePath%>/html/scripts/jquery.js"
  type="text/javascript"></script>
 <script src="<%=basePath%>/html/scripts/jquery.json-2.2.min.js"
  type="text/javascript"></script>
 <script src="<%=basePath%>/html/scripts/jquery.ui.custom.js"
  type="text/javascript"></script>
 <script src="<%=basePath%>/html/scripts/script.js"
  type="text/javascript"></script>
  <script type="text/javascript">
  $(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;
  };
  
  
  });
  
 </script>
 </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>

效果如下

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

相关文章

  • Java中HashMap和Hashtable及HashSet的区别

    Java中HashMap和Hashtable及HashSet的区别

    以下是对Java中HashMap和Hashtable及HashSet的区别进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-09-09
  • java之向linux文件夹下写文件无权限的问题

    java之向linux文件夹下写文件无权限的问题

    这篇文章主要介绍了java之向linux文件夹下写文件无权限的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Java源码解析ArrayList及ConcurrentModificationException

    Java源码解析ArrayList及ConcurrentModificationException

    今天小编就为大家分享一篇关于Java源码解析ArrayList及ConcurrentModificationException,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-01-01
  • java判断用户输入的是否至少含有N位小数的实例

    java判断用户输入的是否至少含有N位小数的实例

    下面小编就为大家分享一篇java判断用户输入的是否至少含有N位小数的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • java判断各类型字符个数实例代码

    java判断各类型字符个数实例代码

    大家好,本篇文章主要讲的是java判断各类型字符个数实例代码,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • java拓展集合工具类CollectionUtils

    java拓展集合工具类CollectionUtils

    这篇文章主要为大家详细介绍了java拓展集合工具类CollectionUtils,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-03-03
  • java  hibernate使用注解来定义联合主键

    java hibernate使用注解来定义联合主键

    这篇文章主要介绍了java hibernate使用注解来定义联合主键的相关资料,需要的朋友可以参考下
    2017-01-01
  • Java基础学习之构造方法详解

    Java基础学习之构造方法详解

    这篇文章主要为大家详细介绍了Java基础学习中构造方法的概述及注意事项,文中的示例代码讲解详细,对我们学习Java有一定帮助,需要的可以参考一下
    2022-08-08
  • Spring Mybatis 基本使用过程(推荐)

    Spring Mybatis 基本使用过程(推荐)

    Mybatis是一个半自动ORM(Object Relational Mapping)框架,它可以简化数据库编程,让开发者更专注于SQL本身,本文给大家介绍Spring Mybatis 基本使用过程,感兴趣的朋友跟随小编一起看看吧
    2024-09-09
  • Java判断闰年的2种方法示例

    Java判断闰年的2种方法示例

    这篇文章主要给大家介绍了关于Java判断闰年的2种方法,文中通过示例代码介绍的非常详细,对大家学习或者使用Java具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09

最新评论