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>

效果如下

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

(0)

相关推荐

  • Java实现的日历功能完整示例

    本文实例讲述了Java实现的日历功能.分享给大家供大家参考,具体如下: 应用名称:Java日历 用到的知识:Java GUI编程,日期操作 开发环境:win8+eclipse+jdk1.8 功能说明:一个很简单的万年历,可以选择年份和月份,也可以用按钮翻页,日历会实时更新日期,最下方会显示当前操作系统的时间. 效果图: 源代码: CalendarFrame.java import java.awt.BorderLayout; import java.awt.GridLayout; import

  • Java实现按年月打印日历功能【基于Calendar】

    本文实例讲述了Java实现按年月打印日历功能.分享给大家供大家参考,具体如下: import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class CalendarBook { public static void main(String[] args) throws ParseException { C

  • java万年历,获取该年月日历表

    这篇文章应用java技术输入年份和月份获取该年月日历表,下面通过一段代码给大家做展示: 输入年份和月份,打印出这个月的日历表     1.1900年1月1日是星期一     2.计算输入的年份距离1900年有多少天再计算当年1月1日距这个月有多少天     3.总天数%7得出从星期几开始     注:计算机中的时间最小到1900年,此外UNIX系统认为1970年1月1日0点是时间纪元.     so,在本程序中不考了1900年以前的年份了.有兴趣的可以自己研究下. import java.uti

  • 学习Java中的日期和时间处理及Java日历小程序的编写

    Java 在 java.util 包中提供了 Date 类,这个类封装了当前的日期和时间. Date 类支持两种构造函数.第一个构造函数初始化对象的当前日期和时间. Date( ) 下面的构造函数接收一个参数等于自1970年1月1日午夜起已经过的毫秒数 Date(long millisec) 一旦有一个可用的日期对象,可以调用以下任何一种支持的方法使用时间: SN 方法和描述 1 boolean after(Date date) 如果调用Date对象包含或晚于指定的日期则返回true,否则,返回

  • Java实现简单日历小程序 Java图形界面小日历开发

    今天给大家介绍一下如何用Java swing开发一款简单的小日历,下面我们来看代码: 首先创建一个CalendarBean类,用于基本的日期计算: package other1; import java.util.Calendar; public class CalendarBean { String day[]; int year=2005,month=0; public void setYear(int year) { this.year=year; } public int getYear

  • 使用JavaBean创建您的网上日历本(1)

    有的朋友曾经说过,如果有一个网上的日记本,或者一个网上的万年历能提醒自己到时去干什么事情就好了.其实呀,这样的日历本您自己也能做一个.不信你看下面的例子: 〈HTML〉 〈HEAD〉 〈TITLE〉万年历记事本〈/TITLE〉 〈/HEAD〉 〈BODY BGCOLOR ="white"〉 //设置页面脚本语言是java,导入HtmlCalendarNotePad类,HtmlCalendarNotePad在后面将会讲到〈%@ page language="java"

  • 使用JavaBean创建您的网上日历本(2)

    JavaBean程序分析 我想把HtmlCalendarNotePad中的主要方法介绍一些,相信会大家有所帮助 public void setYear(int year) //设置年份 .默认值为当前的年份 public int getYear() //获得年份 .默认值为当前的年份 //这是标准Java程序写法,因为Java程序就是一个类所以经常写这种setXXX/getXXXpublic void setMonth(int month) //设置月份(1-12),默认值为当前的月 publi

  • java制作android 日历代码分享

    代码很简单,就不多废话了 复制代码 代码如下: //读取日历事件     public static void getCalendarInfo(Activity activity,String tag){         String[] projection = new String[]{CalendarContract.Events._ID,CalendarContract.Events.TITLE};         ContentResolver cr = activity.getCon

  • 日历显示读出输入的年月的java代码

    复制代码 代码如下: import java.awt.*;import java.awt.event.*;import java.util.Calendar; import javax.swing.JOptionPane; class CalendarBean {  //定义一个日历类 String day[]; //天数数组 int year = 2011, month = 9; //给定一个初始年月 public void setYear(int year) {   this.year =

  • Java中的Calendar日历API用法完全解析

    第一部分 Calendar介绍 Calendar 定义: public abstract class Calendar implements Serializable, Cloneable, Comparable<Calendar> {} Calendar 可以看作是一个抽象类. 它的实现,采用了设计模式中的工厂方法.表现在:当我们获取Calendar实例时,Calendar会根据传入的参数来返回相应的Calendar对象.获取Calendar实例,有以下两种方式: (1) 当我们通过 Cal

  • java实现日历(某年的日历,某月的日历)用户完全自定义

    用户可以自定义打印某一年的年历,即:把某一年的日历全部打印出来 如把2013年的年历打印出来如下: 复制代码 代码如下: January  2013          ---------------------------------------------   Sun   Mon   Tue   Wed   Thu   Fri   Sat     2     3     4     5     7     8     9     10    11    12    14    15    16

随机推荐