JAVA做全年考勤日历

<span style="background-color: rgb(255, 255, 0);">JAVA代码:</span>
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" />
		<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>
<span style="color:#339999;background-color: rgb(255, 255, 51);">效果如下</span>



 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值