`

自己写的一个很简单的日历功能

 
阅读更多
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>My JSP 'MyJsp.jsp' starting page</title>
    <link href="common/css/date.css" rel="stylesheet" type="text/css" />	
	<script type="text/javascript" src="common/js/jquery.js"></script>
	<script type="text/javascript" src="common/js/date.js"></script>
  <script>
	$(document).ready(function (){
		/** 获取当前的年份和月份 **/
		var msg = getYearAndMonth();
		if(msg.indexOf("/")!=-1){
			var yearAndMonth = msg.split("/");
			var year = yearAndMonth[0];
			var monthTemp = yearAndMonth[1];
			var month = monthTemp<10?("0"+monthTemp):monthTemp;
			$("#year").html(year);
			$("#month").html(month);
			getDateListView(year,month);
		}
	})
	
	/** 获取日期数据 **/
	function getDateListView(year,month){
		//加载日期数据中~
		var loadContent = "<tr><td colspan='7' align='center'>"+
		"<img src='common/images/loading.gif' />&nbsp;&nbsp;日期加载中,请稍后!</td></tr>";
		$("#dateListView").html(loadContent);
		var week = intfixDay(year, month, 01);
		var days = accountDays(year, month);
		var num = 0;//计数器
		var loadContent = "<tr align='center'>";
		//第一个星期不足的用空格代替
		for(var i = 0;i < week; i ++){
			loadContent += "<td></td>";
		}
		//第一个星期剩下的直接输出
		for(var i = week;i < 7; i ++){
			num ++;
			var hoverName = "";
			if(i==0 || i==6){
				//周六周日突出显示
				//hoverName = "tdView";
			}
			loadContent += "<td onMouseOver='over(this)' onMouseOut='out(this)' onClick='getDateDetails("+num+")' class='"+hoverName+"'>"+num+"</td>";
		}
		loadContent += "</tr>";
		var lineSize = (days-num) % 7 == 0 ? (days-num)/7:(days-num)/7+1;
		//判断有多少行显示出所有的日期
		for(var x = 0;x < lineSize;x ++){
			loadContent += "<tr align='center'>";
			for(var j = 0;j < 7;j ++){
				if(num >= days){
					//剩余的有空格代替
					loadContent += "<td></td>";
				}else{
					//显示出日期值
					num ++;
					var hoverName = "";
					if(j==0 || j==6){
						//周六周日突出显示
						//hoverName = "tdView";
					}
					loadContent += "<td onMouseOver='over(this)' onMouseOut='out(this)' onClick='getDateDetails("+num+")' class='"+hoverName+"'>"+num+"</td>";
				}
			}
			loadContent += "</tr>";
		}
		//加载日期数据到表格中显示出来
		$("#dateListView").html(loadContent);
	}
		
	/** 获取前一个月的日期数据 **/
	function getPreMonthDate(){
		var year = $("#year").html();
		var month = $("#month").html();
		if(month*1-1<1){
			month = 13;
			year = year - 1;
			$("#year").html(year);
		}
		month = month*1-1<10?"0"+(month*1-1):(month*1-1);
		$("#month").html(month);
		getDateListView(year,month);
	}
	
	/** 获取下一个月的日期数据 **/
	function getNextMonthDate(){
		var year = $("#year").html();
		var month = $("#month").html();
		if(month*1+1>12){
			month = 0;
			year = year*1 + 1;
			$("#year").html(year);
		}
		month = (month*1+1)<10?"0"+(month*1+1):(month*1+1);
		$("#month").html(month);
		getDateListView(year,month);
	}
	
	/** 获取前一年的日期数据 **/
	function getPreYearDate(){
		var year = $("#year").html();
		var month = $("#month").html();
		year = year*1 - 1;
		$("#year").html(year);
		getDateListView(year,month);
	}
	
	/** 获取后一年的日期数据 **/
	function getNextYearDate(){
		var year = $("#year").html();
		var month = $("#month").html();
		year = year*1 + 1;
		$("#year").html(year);
		getDateListView(year,month);
	}
	
	/** 鼠标移放在日期上面 **/
	function over(object){
		$(object).addClass("tdHover");
	}
	
	/** 鼠标移开位置的时候 **/
	function out(object){
		$(object).removeClass("tdHover");
	}
	
	/** 获取具体的时间日期 **/
	function getDateDetails(n){
		var year = $("#year").html();
		var month = $("#month").html();
		alert(year+"-"+month+"-"+n);
	}
  </script>
  </head>
  <body>
  <center><br><br>
  <table class="table" cellspacing="0" cellpadding="5">
  <tr class="tr" align="center">
  <td><a href="javascript:getPreYearDate();" class="href"><<</a></td>
  <td><a href="javascript:getPreMonthDate();" class="href"><</a></td>
  <td align="center" colspan="3"><span id="year"></span>&nbsp;年&nbsp;<span id="month"></span>&nbsp;月&nbsp;</td>
  <td><a href="javascript:getNextMonthDate();" class="href">></a></td>
  <td><a href="javascript:getNextYearDate();" class="href">>></a></td>
  </tr>
  <tr align="center">
  <td>日</td>
  <td>一</td>
  <td>二</td>
  <td>三</td>
  <td>四</td>
  <td>五</td>
  <td>六</td>
  </tr>
  <tbody id="dateListView"></tbody>
  <tr class="tr" align="center">
  <td colspan="7"><a href="javascript:this.close()" class="href">关&nbsp;&nbsp;&nbsp;&nbsp;闭</a></td>
  </tr>
  </table>
  </center>
  </body>
</html>

 

/** 判断是否是闰(run)年 **/
function isLeap(year){
	var b = false;
	if((year % 4 == 0 && year % 100 != 0) || (year % 100 == 0 && year % 400 == 0)){
		b = true;
	}
	return b;
}

/** 计算出某年某月某日是星期几 **/
function intfixDay(year,month,day){
	if(month*1<10){
		month = month.substring(1);
	}
	var z = 0;
	var njs = isLeap(year)==true?2:1;//年基数
	var yjs = getYJS(njs,month*1);
	z =( year*1 + year / 4 + year / 100 - njs + yjs + day ) % 7;
	return parseInt(z,0);
}

/** 获得月基数 **/
function getYJS(njs,month){
	var n = 0 ;
	//平年的时候,每个月对应的值
	if(njs == 1){
		switch (month) {
		case 1:
			n = 0;
			break;
		case 2:
			n = 3;
			break;
		case 3:
			n = 3;
			break;
		case 4:
			n = 6;
			break;
		case 5:
			n = 1;
			break;
		case 6:
			n = 4;
			break;
		case 7:
			n = 0;
			break;
		case 8:
			n = 3;
			break;
		case 9:
			n = 5;
			break;
		case 10:
			n = 0;
			break;
		case 11:
			n = 3;
			break;
		case 12:
			n = 5;
			break;
		default:
			break;
		}
	}else if(njs == 2){
		//闰年的时候,每个月对应的值
		switch (month) {
		case 1:
			n = 0;
			break;
		case 2:
			n = 3;
			break;
		case 3:
			n = 4;
			break;
		case 4:
			n = 0;
			break;
		case 5:
			n = 2;
			break;
		case 6:
			n = 5;
			break;
		case 7:
			n = 0;
			break;
		case 8:
			n = 3;
			break;
		case 9:
			n = 6;
			break;
		case 10:
			n = 1;
			break;
		case 11:
			n = 4;
			break;
		case 12:
			n = 6;
			break;
		default:
			break;
		}
	}
	return n;
}

/** 获取一个月有多少天 **/
function accountDays(year,month) { 
	if(month*1<10){
		month = month.substring(1)*1;
	}
    switch (month) { 
    case 1: 
    case 3: 
    case 5: 
    case 7: 
    case 8: 
    case 10: 
    case 12: 
            return 31; 
    case 2: 
            if(isLeap(year)) 
            	return 29; 
            else return 28; 
    default: 
            return 30; 
    }
} 

/** 获取当前的年份和月份 **/
function getYearAndMonth(){
	var date = new Date();
	return date.getYear()+"/"+(date.getMonth()+1);
}
	

 

  • 大小: 5.8 KB
分享到:
评论

相关推荐

    使用vue写的一个简单的日历

    总之,"vue-datepicker-master"项目提供了一个基于Vue.js的简单日历组件示例,展示了如何利用Vue的组件化思想和数据驱动特性来构建交互式的用户界面。通过学习这个项目,开发者可以加深对Vue.js的理解,并进一步提升...

    自己写的一个简单的jquery 日期插件

    【标题】:“自己写的一个简单的jquery 日期插件” 这篇博客是作者分享的关于自己创建的一个基于jQuery的简单日期插件。在JavaScript编程中,日期处理是一个常见的需求,尤其是在网页应用中,用户可能需要选择日期...

    vue+elementUI实现简单日历功能

    vue+elementUI简单的实现日历功能,供大家参考,具体内容如下 &lt;div&gt;&lt;el type=primary click=handlePrev&gt;&lt;i class=el-icon-arrow-left&gt;&lt;/i&gt;上一月&lt;/el&gt;&lt;/div&gt; &lt;div&gt;{{ year }}年{{ month }}月{{ day }}日 ...

    用ASP写一个简单的日历程序

    本文档展示了一个基于ASP的简单日历程序实现方法。通过对ASP的基础语法、变量处理、条件判断、用户输入处理等方面进行了介绍,同时也展示了如何利用HTML和CSS来美化页面布局。通过阅读这个例子,读者可以了解到如何...

    日历记事本Java写的

    对于学习Java的初学者来说,这是一个很好的实践项目,可以帮助他们巩固基础知识,同时提升实际开发技能。而对于已经有一定经验的开发者,这样的应用也提供了了解和实践JavaFX或Swing GUI设计的机会。

    用c++实现一个简单的日历程序

    在C++编程中,创建一个简单的日历程序涉及到多个核心概念和函数的使用。下面将详细解释这个项目中涉及的主要知识点: 1. **输入/输出流(I/O Stream)**: C++中的输入/输出流是通过`iostream`库实现的,包括`cin`...

    JAVA编写的日历记事本 实现日历及记事本功能

    3. **日期和时间处理**:实现日历功能需要对日期和时间进行操作。Java提供`java.util.Calendar`类和`java.time`包(Java 8及以上版本)来处理日期和时间。开发人员可能使用这些API来显示当前日期、月份和年份,并...

    在.net 2005 下用C# 写成一个小日历应用程序

    标题中的“在.NET 2005 下用C# 写成一个小日历应用程序”指的是一个使用C#编程语言在Microsoft的.NET Framework 2005开发环境中创建的日历应用程序。这个项目的主要目的是提供一个简单易用的日历界面,同时也是一个...

    自己用VC写的电子日历程序

    用户可以通过解压并编译源代码来查看和理解程序的工作原理,这对于学习C++和日期处理的开发者来说是一个很好的实践案例。 总的来说,这个电子日历程序展示了如何使用C++和Visual C++工具集来创建一个用户界面,并...

    自定义日历-实现签到订约功能

    总的来说,这个自定义日历系统结合了多种Android开发技术,涵盖了用户界面设计、数据管理、事件处理等多个方面,对于学习Android开发的开发者来说,是一个很好的实践项目。通过这个项目,你可以深入了解Android开发...

    用c写的一个简易日历

    本项目是利用C语言实现的一个简单的日历程序,对于初学者来说,这是一个很好的学习实践案例。通过这个程序,我们可以了解C语言如何处理日期和时间,以及如何在控制台上打印出美观的日历。 【描述】:“这个简易日历...

    ios 读写iOS系统中日历事件

    在iOS平台上,与日历事件相关的开发涉及到苹果的EventKit框架,这个框架允许开发者读取、创建、修改和删除...通过研究和使用这个SDK,开发者能够快速集成日历功能到自己的iOS应用中,为用户提供更丰富的日程管理体验。

    Java--简单的日历程序

    在Java编程语言中,创建一个简单的日历程序可以涉及到日期和时间处理,这是Java核心库中的重要部分。本文将深入探讨如何使用Java实现一个基本的日历应用,主要关注`java.util.Calendar`类以及相关的API。 首先,让...

    一个用jsp写的日历

    【描述】:“一个用jsp写的日历” 这个描述简单地提到了一个基于JSP技术实现的日历应用。JSP(JavaServer Pages)是Java平台上的一种动态网页技术,允许开发人员将HTML、CSS、JavaScript与Java代码混合在一起,以...

    javap写的一个动态日历

    总结来说,这个项目是一个使用Java编程语言构建的控制台应用程序,它实现了日历功能,可能包括显示当前月份的日期,并可能允许用户导航到其他月份。开发过程中,开发者会运用Java的时间和日期API,以及控制台输出和...

    自制日历,typescript编写

    使用TypeScript的Jest或Mocha等测试框架,编写单元测试和集成测试,确保日历功能的正确性。测试应覆盖所有核心功能,包括年份范围设定、待办事项的显示和操作等。 在实际项目中,你可能会使用诸如React或Vue这样的...

    javaSwing写的日历控件

    对于初学者来说,这是一个很好的起点,能够学习到如何通过编程实现用户界面,并理解事件监听器、模型-视图-控制器(MVC)设计模式等关键概念。 标签"日历空间"可能指的是这个控件提供了展示一整个月或者更长时间...

    手把手教你写一个最最最简单的微信小程序日历组件(源码免费完整下载).zip

    在本教程中,我们将一起学习如何创建一个极简版的微信小程序日历组件。...无论你是初学者还是有一定经验的开发者,这个项目都将是一个很好的学习和锻炼机会。在实践中遇到任何问题,记得欢迎提出,让我们共同进步。

    汇编写的日历(初级)

    这个项目对于初学者来说,是一个很好的汇编语言实践机会。通过编写这样的程序,可以深入了解计算机如何处理日期和时间,同时提升汇编语言的编写技能。对于更高级的开发者,这样的项目可以作为一个起点,进一步优化和...

Global site tag (gtag.js) - Google Analytics