java編寫全年考勤日歷
本文實(shí)例為大家分享了java編寫全年考勤日歷的具體代碼,供大家參考,具體內(nèi)容如下
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() { // 每行開頭灰色的格數(shù) int headDisabledDays; // 當(dāng)月的天數(shù) 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(); // 每行開頭灰色的格數(shù) 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>
效果如下
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 日歷顯示讀出輸入的年月的java代碼
- Java中的Calendar日歷API用法完全解析
- java實(shí)現(xiàn)日歷(某年的日歷,某月的日歷)用戶完全自定義
- 學(xué)習(xí)Java中的日期和時(shí)間處理及Java日歷小程序的編寫
- Java實(shí)現(xiàn)簡(jiǎn)單日歷小程序 Java圖形界面小日歷開發(fā)
- java制作android 日歷代碼分享
- java萬(wàn)年歷,獲取該年月日歷表
- 使用JavaBean創(chuàng)建您的網(wǎng)上日歷本(2)
- Java實(shí)現(xiàn)按年月打印日歷功能【基于Calendar】
- 使用JavaBean創(chuàng)建您的網(wǎng)上日歷本(1)
- Java實(shí)現(xiàn)的日歷功能完整示例
相關(guān)文章
詳解Java實(shí)現(xiàn)簡(jiǎn)單SPI流程
這篇文章主要介紹了Java實(shí)現(xiàn)簡(jiǎn)單SPI流程,SPI英文全稱為Service Provider Interface,顧名思義,服務(wù)提供者接口,它是jdk提供給“服務(wù)提供廠商”或者“插件開發(fā)者”使用的接口2023-03-03Java裝飾器設(shè)計(jì)模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要介紹了Java裝飾器設(shè)計(jì)模式的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2017-05-05使用Springboot封裝一個(gè)自適配的數(shù)據(jù)單位轉(zhuǎn)換工具類
我們?cè)诮邮涨芭_(tái)傳輸?shù)臄?shù)據(jù)時(shí),往往SpringBoot使用內(nèi)置的數(shù)據(jù)類型轉(zhuǎn)換器把我們提交的數(shù)據(jù)自動(dòng)封裝成對(duì)象等類型,下面這篇文章主要給大家介紹了關(guān)于使用Springboot封裝一個(gè)自適配的數(shù)據(jù)單位轉(zhuǎn)換工具類的相關(guān)資料,需要的朋友可以參考下2023-03-03Java 靜態(tài)數(shù)據(jù)初始化的示例代碼
這篇文章主要介紹了Java 靜態(tài)數(shù)據(jù)初始化的示例代碼,幫助大家更好的理解和學(xué)習(xí)Java,感興趣的朋友可以了解下2020-09-09Java使用嵌套循環(huán)模擬ATM機(jī)取款業(yè)務(wù)操作示例
這篇文章主要介紹了Java使用嵌套循環(huán)模擬ATM機(jī)取款業(yè)務(wù)操作,結(jié)合實(shí)例形式分析了Java模擬ATM機(jī)取款業(yè)務(wù)操作的相關(guān)流程控制、數(shù)值判斷等操作技巧,需要的朋友可以參考下2019-11-11