- 浏览: 582238 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (268)
- ext基础 (72)
- Java基础 (68)
- jquery (14)
- oracle (21)
- sqlserver (7)
- linux (2)
- webserver (1)
- C/C++ (1)
- sql (9)
- IDE (2)
- java 智能卡 (1)
- mysql (6)
- ibatis (2)
- struts2 (3)
- cvs (1)
- 服务器 (1)
- html (11)
- freemarker (4)
- liferay (2)
- jMS (1)
- iphone (1)
- c# (1)
- Android (11)
- wince (6)
- javascript (4)
- ps (1)
- hibernate (1)
- 其他 (3)
最新评论
-
ilyq:
请问,px.gif 在哪里
斜线表头 -
jisang:
没看懂,第一个org.js和最后的js什么关系,可否发我一份完 ...
用ExtJS 实现动态载入树(Load tree) -
JavaStudyEye:
我去,能否搞个正确点的,,,
<#list ...
freemarker 遍历map 对象 -
PangSir:
大爱,简直是大爱!!困扰这么久以来的问题,虽然知道是CSS的问 ...
ExtJs checkbox radiobox 问题 汇总 -
skynet_java:
有demo嘛!邮箱:think_world@foxmail.c ...
消息推送服务需求 - 服务器开发、客户端开发
算法描述
1.获取日期参数,然后自减一
2.判断该日期是否是周末,如果否执行4
3.判断当天是否调整为工作,如果否则执行1
4.判断当前日期是否是节假日,如果是则执行1
5.判断当前日期既不是周末也不是节假日
6.返回当前日期,结束。
配置文件:
形参分为以下两种情况:
1.获取日期参数,然后自减一
2.判断该日期是否是周末,如果否执行4
3.判断当天是否调整为工作,如果否则执行1
4.判断当前日期是否是节假日,如果是则执行1
5.判断当前日期既不是周末也不是节假日
6.返回当前日期,结束。
配置文件:
形参分为以下两种情况:
引用
1.输入为空,返回当前日期的上一个工作日
2.输入为日期参数,格式:20080503,代表2008年5月三日
读取配置文件输入 working.properties
#work=日期1,说明;日期2,说明;….
work=20080404,五一劳动节;20080501,六一儿童节
#swap = 日期1,调整类型,说明;日期2,调整类型,说明;…
#调整类型分为0,1,其中0代表当天工作,1代表当天休息
#比如,五一调整到2号休息:20080501,0,五一继续上班;20080502,1,2号休息
swap=20080501,0,五一继续上班;20080502,1,2号休息
2.输入为日期参数,格式:20080503,代表2008年5月三日
读取配置文件输入 working.properties
#work=日期1,说明;日期2,说明;….
work=20080404,五一劳动节;20080501,六一儿童节
#swap = 日期1,调整类型,说明;日期2,调整类型,说明;…
#调整类型分为0,1,其中0代表当天工作,1代表当天休息
#比如,五一调整到2号休息:20080501,0,五一继续上班;20080502,1,2号休息
swap=20080501,0,五一继续上班;20080502,1,2号休息
public class GetWorkingDays extends Function { // 当前日期 private Date date; @Override public Object calculate(Context context, boolean inputValue) { // 日期格式化 SimpleDateFormat sdf = new SimpleDateFormat(”yyyyMMdd”); // 读取配置文件 .... String work = WorkUtils.getWork(); String swap = WorkUtils.getSwap(); // 条件结果定义 boolean result1 = false; boolean result2 = false; // 获取参数定义 if (this.paramList.size() < 1) this.date = new Date(); else { Expression exp = (Expression) this.paramList.get(0); String dateParam = (String) Variant2.getValue(exp.calculate( context, inputValue), false, false); try { this.date = sdf.parse(dateParam); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println(”当前日期为:” + sdf.format(date)); // 通过Calendar来进行日期减一运算 Calendar cd = Calendar.getInstance(); cd.setTime(date); // 做循环直到找到合适的日期 while (true) { cd.add(Calendar.DATE, -1); date = cd.getTime(); System.out.println(”日期:” + sdf.format(date) + “;星期” + (cd.get(Calendar.DAY_OF_WEEK) - 1) % 7); // 判断当天是否是周末 result1 = this.isWeekEnd(date, swap); // 判断当天是否是节假日 result2 = this.isWorkDays(date, work); //即不是节假日也不是周末,那么确定日期 if (result1 == false && result2 == false) break; } return date; } /** * 判断是否是周末 * * @param date * @return */ public boolean isWeekEnd(Date date, String swap) { boolean flag = false; Calendar c = Calendar.getInstance(); c.setTime(date); // 判断是否是周末 if (c.get(Calendar.DAY_OF_WEEK) == Calendar.SATURDAY || c.get(Calendar.DAY_OF_WEEK) == Calendar.SUNDAY) { // 判断是否存在”调整为上班的周末”的列表 System.out.println(”该天为周末”); if (!this.isSwap(date, swap)) { System.out.println(”该周末调整为上班!”); flag = true; } } return flag; } /** * 判断是否是休假日期 * * @param days * @return */ public boolean isWorkDays(Date day, String workdays) { boolean flag = false; // 获取休假日列表 String[] temp = workdays.split(”;”); for (int i = 0; i < temp.length; i++) { String[] work = temp[i].split(”,”); work = this.caluWork(work); try { if (this.dateCompareTo(day, work[1], work[2])) { flag = true; System.out.println(”该天是法定节假日!”); break; } } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return flag; } /** * 对work参数进行处理 * @param work * @return */ public String[] caluWork(String[] work) { String[] temp = new String[3]; if (work.length <= 2) { temp[0] = work[0]; temp[1] = work[1]; temp[2] = work[1]; } else temp = work; return temp; } /** * 判断当天的调整情况,如果调整为工作,返回true,否则返回false 如果调整列表没有这个日期视为当天工作,返回true * * @param days * @return */ public boolean isSwap(Date day, String swapdays) { boolean flag = false; // 获取日期调整列表 String[] temp = swapdays.split(”,”); for (int i = 0; i < temp.length; i++) { try { if (temp[i].equals(this.parseDate(day))) { flag = true; break; } } catch (ParseException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } return flag; } /** * 日期类型转化为字符串 * * @param temp * @return * @throws ParseException */ public String parseDate(Date date) throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat(”yyyyMMdd”); return sdf.format(date); } /** * 日期区间比较 * * @param date * @param begin * @param after * @return * @throws ParseException */ public boolean dateCompareTo(Date date, String begin, String end) throws ParseException { boolean flag = false; SimpleDateFormat sdf = new SimpleDateFormat(”yyyyMMddHHmmss”); begin = begin + “000000″; end = end + “235959″; Date date1 = sdf.parse(begin); Date date2 = sdf.parse(end); flag = ((date.after(date1)) && (date.before(date2)) || date.equals(date1) || date.equals(date2)); return flag; } }
WorkUtils.java: package com.runqian.mis.util; import java.util.*; public class WorkUtils { private static final String OPTION_FILE_NAME=”work”; private static String working; private static String swap; /** * 初始化 */ static{ ResourceBundle rb = ResourceBundle.getBundle(OPTION_FILE_NAME,locale); working = rb.getString(”work”).trim(); swap = rb.getString(”swap”).trim(); } /** * 获取节假日 * @return */ public static String getWork() { return working; } /** * 获取假期调整 * @return */ public static String getSwap() { return swap; } }
引用
函数使用
1,把类和配置文件放到设计器的%reportHome%\designer\WEB-INF\classes
目录或者应用的%WEB-INF%\classes目录
2,修改customFunctions.properties文件添加自定义函数
getWorkingDays=0,com.runqian.mis.util.GetWorkingDays
1,把类和配置文件放到设计器的%reportHome%\designer\WEB-INF\classes
目录或者应用的%WEB-INF%\classes目录
2,修改customFunctions.properties文件添加自定义函数
getWorkingDays=0,com.runqian.mis.util.GetWorkingDays
发表评论
-
springboot 发布
2022-01-08 16:53 136java -jar spring-boot-druid-0.0 ... -
List 边遍历,边删除?
2020-07-17 16:51 397新手常犯的错误 可能很 ... -
servlet 文件上传
2012-08-10 10:52 1094org.apache.commons.fileupload 文 ... -
pdf 简单连接servlet
2012-07-25 10:05 1065protected void doGet(HttpSe ... -
应用 HttpClient 来对付各种顽固的WEB服务器
2012-04-11 17:38 941一般的情况下我们都是使用IE或者Navigator浏览器来访问 ... -
MAVEN2入门学习心得(4)-知识汇集
2012-01-11 14:16 967一、创建Spring+Hibernate+Activiti+V ... -
MAVEN2入门学习心得(3)-仓库管理器Nexus相关
2012-01-11 14:11 1290以前觉得Nexus搭建太简单,没有留下学习重点,重新温习起来又 ... -
MAVEN2入门学习心得(2)-仓库相关
2012-01-11 14:08 1246MAVEN2的仓库基本可以分为主机仓库、代理仓库、本地仓库。 ... -
MAVEN2入门学习心得(1)-插件相关
2012-01-11 14:02 1114MAVEN2涉及到很多插件,掌握插件的学习方式很重要,要不然接 ... -
restful webserice
2011-08-11 20:06 902package com.onetown.action.admi ... -
java.lang.OutOfMemoryError: PermGen space及其解决方法
2011-08-05 10:00 838这个问题是我的工程中 ... -
ibatis 一级缓存 功能
2011-01-28 15:50 2060前几天和朋友讨论数据库Cache的时候,谈到了iBatis框架 ... -
内存溢出的解决
2011-01-28 15:07 1033内存溢出虽然很棘手 ... -
oracle sql 基础
2010-12-25 14:52 839视图; create or replace view my_v ... -
Java 简单 计算任意两个日期之间的工作天数
2010-09-06 09:20 1730主要思路: 对于任意2个日期比如:date_start=201 ... -
java file
2010-09-05 21:37 1242追加文件尾部 public void testPrintWri ... -
验证码
2010-08-31 09:07 1001package com.pa.util; import ... -
java List与Array 转换
2010-08-31 08:57 35420public static void main(String[ ... -
java property 配置文件 用法
2010-08-14 18:12 4942在我们平时写程序的时候,有些参数是经常改变的,而这种改变不是我 ... -
防止 session 被 篡改
2010-06-27 14:27 1698public String login() { ...
相关推荐
23.计算两个日期之间的工作日 43 24.根据年月生成日历函数 44 25.从第一个汉字开始分割字符串 47 26.过滤掉字符串中重复的字符 47 27.根据日期得到星期的函数 48 28.根据年度判断是否是闰年 49 29.完善SQL农历转换...
函数作用:在多个工作表中查找一个范围内符合某个指定条件的项目对应指定范围加总求和..........................59 '35.函数作用:返回 Column 英文字.......................60 '36.函数作用:查找指定列名的列数.......
2、Mysql 得到T+n个工作日日期(带自定义节假日、法定节假日) fGetWorkDay('2018-02-13', 5) ------------------------------ 2018-02-26 fGetWorkDay('2018-09-26', 5) ------------------------------ 2018-...
20.一个能计算是否有重复单元的函数 21.数字金额转中文大写 22.将数字转成英文 23.人民币大小写转换 24.获取区域颜色值 25.获取活动工作表名 26.获取最后一行行数 27.判断是否连接在线 28.币种转换 29.检验工作表...
【泛微E9】OA中自定义计算工作日函数
mysql_function_china_workday使用mysql是json函数,通过给每...wokday.sql自定义函数的sql注意未兼容下班后(例如:18:00)算下一个工作日没有0个工作日概念,所以结果+1不支持mysql 5.6版本测试用,勿适用于生产环境
使用三种办法计算工作日: 1、系统自动分析函数(国际通用); 2、自定义去除周末(国际通用); 3、按国内法定假日及周末,计算国内实际工作日;
一个具有11项汇总方式的函数SUBTOTAL 自动排序 按奇偶数排序 自动生成序号 如何自动标示A栏中的数字大小排序? 如何设置自动排序 重复数据得到唯一的排位序列 按字符数量排序 排序字母与数字的混合内容 随机排序 ...
2.5.3 工作日处理函数(自定义节假日) 2.5.4 计算工作时间的函数 其他 交叉表 任意两个时间之间的星期几的次数-横 任意两个时间之间的星期几的次数-纵 复杂年月处理 统计--交叉表+日期+优先 3.2 各种字符串分拆处理...
一个具有11项汇总方式的函数SUBTOTAL 自动排序 按奇偶数排序 自动生成序号 如何自动标示A栏中的数字大小排序? 如何设置自动排序 重复数据得到唯一的排位序列 按字符数量排序 排序字母与数字的混合内容 随机排序 ...
--工作日处理函数(自定义节假日) --计算两个日期之间的工作天数 --在指定日期上增加工作天数 --计算工作时间的函数 --计算两个日期之间的工作时间 --9、动态语句语法 --10、SQL SERVER 2005 同步复制技术 --11、处理...
自定义函数,也叫用户定义函数,是Excel最富有创意和吸引力的功能之一,下面我们在Visual Basic模块中创建一个函数。 在下面的例子中,我们要给每个人的金额乘一个系数,如果是上班时的工作餐,就打六折;如果是加班...
• 计算上个月的考勤天数 • 计算基金赎回入账日期 • 加班时间的累加 • 计算车间工人工时 • 员工加班时间的舍入计算 • 使用VLOOKUP 函数进行员工信息查询 • 利用HLOOKUP 函数查询产品月销售量 • 查找某员工...
【公农双历查询】:生成多功能日历,可以查询所有节、假日和农历 【高级定位】:多功能选择(查找)工具。可以选择大于某值或者小于某值或者在某范围之间的值,文本定位时支持通配符。还可以按格式查找/定位 【背景...
【公农双历查询】:生成多功能日历,可以查询所有节、假日和农历 【高级定位】:多功能选择(查找)工具。可以选择大于某值或者小于某值或者在某范围之间的值,文本定位时支持通配符。还可以按格式查找/定位 ...
自定义函数一览表 【sumifcol】【AVER】【hesum】【NOWW】【SFZ】【批注】【合并】【取数】【唯一值】【消除空值】【颜色求和】【颜色计数】【工作表】【数字】【分割取数】【共有项】不同项】【【公式】【计算】...
第5~第8讲主要讲解了Windows7常用的组件、如何播放和制作多媒体文件以及互联网的相关知识,通过实例的讲解,读者可以很快掌握Windows7日常工作和娱乐所需的操作。第9~第12讲主要介绍了用户账户的管理、软硬件的...
【公农双历查询】:生成多功能日历,可以查询所有节、假日和农历 【高级定位】:多功能选择(查找)工具。可以选择大于某值或者小于某值或者在某范围之间的值,文本定位时支持通配符。还可以按格式查找/定位 【背景...
22.快速输入工作日序列 23. OFFSET实现系列值的创建 24.定义名称的妙用 25.公式“错误检查”是好帮手 26.Vlookup 多个字段查询 27.利用Vlookup实现星座查询 28.Index函数返回单元格的值 29.按颜色进行“筛选” 30....
再就是自定义函数时由于课本的概念不清楚,多写了空格键,以至函数调用不出来。又如:在设计修改学生信息时的密密码时。当用户发现输入密码错误按了退格键后,因为“*”并没有消去。导致用户再次按退格键,又出现...