设计 一个 oa 当中 的日历显示 跳转 上月 下月
2013-03-04 15:52
519 查看
主要就是利用 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"> </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
大小: 63.6 KB
查看图片附件
相关文章推荐
- 设计 一个 oa 当中 的日历显示 跳转 上月 下月
- 一个显示模块的设计
- javascript与jQuery设置取得div绝对位置一个小应用(像日历控件一样,在编辑框下面显示一个层)
- Java实训——编写一个窗体程序显示日历。
- C#--第12周实验--任务1(设计一个窗体)--窗体中有一个图片框,显示一副图片,当鼠标停留在图片框时,显示“**风光”提示
- 结构体_习题:设计一个程序,输入一个学生的信息并显示
- javascript与jQuery设置取得div绝对位置一个小应用(像日历控件一样,在编辑框下面显示一个层)
- java第二周---.用线程设计一个时间类,并显示时间
- HTML一个页面输入值跳转到另一个页面并且显示出来
- C#--第11周实验--任务3--设计一个窗体,窗体上有两个文本框,一个按钮,2个单选按钮--实现单击按钮后,根据单选按钮,将对应文本框中内容显示在标签。
- 7.2 设计一个点类,其中包含一对坐标点数据成员、一个求两个点之间距离的友元函 数 dist 和显示坐标点的成员函数,并用数据进行测试。
- 一个OA系统的权限设计
- 一个关于分页的数据和显示分离的设计
- 题目: 编写一个程序,实现设置上月、本月电表读数,显示上月ji本月电表读数,计算并显示本月用电数。假设每度电的价格为1.2元,计算并显示本月电费。
- Java日历模型:输入一个日期,控制台显示
- android设计实现窗体启动时,显示一个水平进度条,当进行完成后,隐藏该进度条,并显示一张图片
- 设计一个学生成绩管理系统,实现对学生成绩的动态管理,实现对学生成绩的输入,显示,删除,查找,插入,最佳,保存,计算,排序等主要功能
- .Net有关问题。在GridView中添加了一个HyperLinkField,用来显示显示详细信息,请教跳转后的详细信息页面该怎样写代码
- 设计一个如下图所示窗体:该窗体自动位于屏幕中央;大小不可调;最小化、最大化按钮不可用;窗体标题为“烟台大学”。在该窗体上,放置一个按钮、一个标签。单击按钮时,在标签上显示当前系统时间。
- [5.18]编写一个学生和教师数据输入和显示程序,学生数据有编号、姓名、班号、和成绩,教师数据有编号 姓名、职称和部门。要求将编号、姓名输入和显示设计成一个类person,并作为学生数据操作类stud