设计 一个 oa 当中 的日历显示 跳转 上月 下月

 

主要就是利用 java的Calendar 类

 

 

传入一个 参数 如yyyyMMdd 20101201 这样的参数

 

然后找到 月 的第一天 和 月的最后一天 进行循环。

 

将循环放到 星期数组里面 传到页面。

 

        private String currentDay;
	private String currentMonth;
	private List<String[]> weeksOfMonth;

	/**
	 * 分页.查询.排序.
	 */
	public String listSchedule() throws Exception {
		Calendar now = Calendar.getInstance();
		if (currentDay != null) {
			try {
				now.setTime(new SimpleDateFormat("yyyyMMdd")
						.parse(currentDay));
			} catch (Exception e) {

			}
		}
		Calendar dateFirst = Calendar.getInstance();
		dateFirst.set(Calendar.YEAR, now.get(Calendar.YEAR));
		dateFirst.set(Calendar.MONTH, now.get(Calendar.MONTH));
		dateFirst.set(Calendar.DATE, 1);
		//将当前天和当前月设置值
		currentDay = new SimpleDateFormat("yyyyMMdd").format(now.getTime());
		currentMonth = new SimpleDateFormat("yyyyMM").format(now.getTime());

		List<String> daysOfMonth = new ArrayList<String>();// 变量放日期
		weeksOfMonth = new ArrayList<String[]>();// 转换成的星期
		for (int i = 1; i < ((dateFirst.get(Calendar.DAY_OF_WEEK)+5)%7); i++) {// 添加1号前面的空格
			daysOfMonth.add("");
		}
		for (int i = 1; i <= now.getActualMaximum(Calendar.DATE); i++) {
			//now.getActualMaximum(Calendar.DATE)获得当月天数
			daysOfMonth.add(i + "");// 添加月下面的日期
		}
		for (int i = daysOfMonth.size(); i < 6 * 7; i++) {
			daysOfMonth.add("");// 添加月末后面的空格
		}
		for (int j = 0; j < daysOfMonth.size(); j = j + 7) {// 将数组转换成星期放到list里面
			String[] week = new String[7];
			int index = 0;
			week[index] = daysOfMonth.get(j + index++);// 星期一
			week[index] = daysOfMonth.get(j + index++);// 星期二
			week[index] = daysOfMonth.get(j + index++);// 星期三
			week[index] = daysOfMonth.get(j + index++);// 星期四
			week[index] = daysOfMonth.get(j + index++);// 星期五
			week[index] = daysOfMonth.get(j + index++);// 星期六
			week[index] = daysOfMonth.get(j + index++);// 星期日
			weeksOfMonth.add(week);
		}
		return SUCCESS;
	}

 这里有个问题

 

(dateFirst.get(Calendar.DAY_OF_WEEK)+5)%7)

 

本来 用

DAY_OF_WEEK

就可以获得星期,可是星期是从 周日开始的。想从周一开始就得 向后挪 5

 

在页面显示

 

<s:iterator value="weeksOfMonth" status="status" id="week">
		<fs:gridPanelDataTable4Date index="${status.index}">
			<fs:gridPanelDataColumn4Date width="6" height="40">&nbsp;</fs:gridPanelDataColumn4Date>
			<s:iterator begin="0" end="6" step="1" id="index"><!-- 进行星期的7天循环 -->
				<s:if test="${index} == 5 || ${index} == 6"><!-- 判断是否是周六,周日换背景为黄色 -->
					<fs:gridPanelDataColumn4Date width="100" height="40" style="background-color: #ffffcc;">
						<span class="scheduleDateWeekendDiv"><s:property value="${week[index]}"/></span>
						<s:if test="${week[index]} != ''">
						<a href="javaScript:showScheduleViewDiv('${currentMonth}<s:if test="${week[index]} < 10 ">0${week[index]}</s:if><s:else>${week[index]}</s:else>');">编辑</a>
						<a href="${ctx}/addUserInfo.action?id=<s:property value="id"/>">查看</a>
						</s:if>
					</fs:gridPanelDataColumn4Date>
				</s:if>
				<s:else>
					<fs:gridPanelDataColumn4Date width="100" height="40">
						<span class="scheduleDateWeekendDiv"><s:property value="${week[index]}"/></span>
						<s:if test="${week[index]} != ''">
						<a href="javaScript:showScheduleViewDiv('${currentMonth}<s:if test="${week[index]} < 10 ">0${week[index]}</s:if><s:else>${week[index]}</s:else>');">编辑</a>
						<a href="${ctx}/addUserInfo.action?id=<s:property value="id"/>">查看</a>
						</s:if>
					</fs:gridPanelDataColumn4Date>
				</s:else>
			</s:iterator>
		</fs:gridPanelDataTable4Date>
	</s:iterator>

 

其中用到了一些自己封装的 标签。

 

效果图:

 

上月 下月的 action

/**
	 * 上一月
	 */
	public String prevMonthSchedule() throws Exception {
		Calendar now = Calendar.getInstance();
		if (currentDay != null) {
			try {
				now.setTime(new SimpleDateFormat("yyyyMMdd")
						.parse(currentDay));
			} catch (Exception e) {

			}
		}
		now.set(Calendar.MONTH, now.get(Calendar.MONTH) - 1);
		currentDay = new SimpleDateFormat("yyyyMMdd").format(now.getTime());
		System.out.println("currentDay:" + currentDay);
		return SUCCESS;
	}

	/**
	 * 下一月
	 */
	public String nextMonthSchedule() throws Exception {
		Calendar now = Calendar.getInstance();
		if (currentDay != null) {
			try {
				now.setTime(new SimpleDateFormat("yyyyMMdd")
						.parse(currentDay));
			} catch (Exception e) {

			}
		}
		now.set(Calendar.MONTH, now.get(Calendar.MONTH) + 1);
		currentDay = new SimpleDateFormat("yyyyMMdd").format(now.getTime());
		System.out.println("currentDay:" + currentDay);
		return SUCCESS;
	}

 

 

源代码 和 oa 放到一起了

demo:

http://freeweboa.appspot.com/index.html

里面的日程管理

下载地址:

 

http://code.google.com/p/freewebsys/downloads/list

 

时间: 2024-09-20 09:39:19

设计 一个 oa 当中 的日历显示 跳转 上月 下月的相关文章

算法设计,一个流水号,中间存在一个禁忌数,如何快速跳过这个数字

问题描述 算法设计,一个流水号,中间存在一个禁忌数,如何快速跳过这个数字 具体需求如下,一串数字(比如1235673),禁忌数为4,那么流水号的下一位应该直接跳过1235674,变成1235675.那么如果这串数字是39999999这样的情况,那么40000000-49999999都是不能出现的禁忌数.如何找到一个算法,快速的算出避开禁忌数的下一个数? 解决方案 用一数组表示这个流水号.即用一组整型数表示0-8,每次+1后将数组合成为整数.合成时0-3表示0-3,4-8 表示5-9 解决方案二:

ios-IOS+点击Button跳转到一个新界面,并显示这个新界面中的内容

问题描述 IOS+点击Button跳转到一个新界面,并显示这个新界面中的内容 如题,跳转我已经做好了,但是跳转后的页面显示出来是一片黑屏,求助. 这是我的跳转代码: 解决方案 新页面设置下背景色就好了,默认这个是黑色的

我想设计一个程序,点击关闭后会自动跳转到一个网址,请问代码怎么写

问题描述 我想用VC6.0设计一个程序,点击关闭(即右上角X号)后会自动跳转到一个网址(www.xxxx.com),请问代码怎么写小弟是个菜鸟,请说得详细些,好吗?谢谢! 解决方案 解决方案二:在关闭事件里system"iexplore.exehttp://xxxxx"先拦截关闭事件吧,俺用拦截SYS_COMMAND来实现,参数忘了.解决方案三:你响应窗口的WM_SYSCOMMAND消息,重载OnSysCommand函数,点X时查看传进来的参数是什么,以后可以判断遇到这样的参数是就是关

photoshop快速设计一个IOS应用图标制作教程

给各位photoshop软件的使用者们来详细的解析分享一下快速设计一个IOS应用图标的制作教程. 教程分享: 开始前,请先准备一个iOS 应用图标模板,可以从iOS Icon Template或者App IconTemplate下载(我用的就是后者的素材). 我的电脑屏幕上只显示了 1024px 的大图标,我觉得用这个模板做参考就可以了. 你可以将应用图标模板进行裁剪,只保留 1024px 的图标,或者处理模板上的其余元素.   下面我们正式开始. 步骤 1:创建 iOS应用图标的基本形状 首先

c++-设计一个完整的C++程序

问题描述 设计一个完整的C++程序 设计一个完整的C++程序,把某个班的学生信息保存在磁盘文件中.学生信息包括学号.姓名.电话号码.QQ号.E_mail和家庭地址,以二进制的形式存放到磁盘中.从磁盘中读取出来,并显示在屏幕上,然后输入学生的QQ号,查找是否有该学生信息,有则显示该学生信息,无则显示查找失败. 解决方案 啥意思?命题作文??? 解决方案二: c#我倒是会一点,但是C++写真不会 解决方案三: 定义一个相应的结构体数组,把数据从文件读到数组中,再自定义一个打印函数和查找函数,我记得我

如何设计一个成功的网站

设计     随着网络技术的不断发展,网络应用已经渗透到人类社会的各个角落.作为网络世界的支撑点的网站,更是人们关注的热点:政府利用网站宣传自己的施政纲领,日益成为与百姓交流的直通车:企业利用网站宣传自己的形象,挖掘无限商机:个人利用网站展示个性风采,创建彼此沟通的桥梁.越来越多的人希望拥有网站,开辟网络世界里的一片天地.如何设计一个出色的网站呢?关于这个问题,人们讨论的很多,可以讨论的内容也很多,加之网络技术的飞速发展,很难提出一个绝对权威和正确的设计思路,笔者不才,根据自己的设计体 会,总结

使用Annotations设计一个MVC框架

设计 当设计一个应用程序时, 清晰的分离该程序的不同逻辑组件, 总是被证明是有益的. 同时也存在许多不同的模式来帮助开发者实现这个目标.其中最有名同时也最常用的自然是Model-View-Controller (MVC)了, 它能够将每个应用程序(或者应用程序的一部分)分成三个不同功能的组件,并且定义了把他们联结在一起的规则.Swing本身就是基于这个模式的,而且每个使用Struts,这个流行的开发Web应用框架的人也都了解隐藏在MVC后面的理论. 这篇文章介绍了怎么样通过使用annotatio

设计一个高效的缓存管理服务 C#

一直以来,我都发现程序的运行速度不够理想.通过查代码,发现程序对数据库的访问非常频繁,而且检索出来的数据量比较大.为了让程 序运行快起来,我想对程序采用适当的缓存方法. 我在C#尝试了5种方法进行数据缓存,具体如下: (如有遗漏,错误欢迎大家指正,欢迎提建议.) 1:Session方法:此方法是针对于每个用户来的,如果用户量比较大,那么建议不要采用此方法,否则会大量耗尽服务器资源. 2:Cache方法: 2.1:对于每个用户来说访问的数据最好是一致的,否则要用不同的key标识不同的缓存. (要缓

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

 这篇文章主要介绍了日历显示读出输入的年月的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; //给定一个初始年月