工作日和工作时间的统计维护




(暂时没有评分)工作日和每天工作时间的统计维护(顺带提供一个FLEX开发的工作日维护模块).
如果只是查询出一段时间的工作日确实有很多的方法例子可用,不过要查询出具体的工作时间:比如”2009-06-01 10:30″日到”2009-06-21 3:20″这段时间的工作时间(除去法定节假日和周末休息,并且要加上特殊的工作日,设定每天上下午上班时间,算出具体的工作时间),就比较复杂了~
这里我的想法是在算出总工作日的同时,算出第一天的工作时间,最后一天的工作时间(如果这两天是工作日的话),中间的工作日就乘默认每天的工作小时,之后三项相加就得出总的工作时间了,不过如果开始时间和结束时间在同一天又是另外一种算法了,总之比较麻烦,下面提供的一段代码是照着这样的思路来写的,不知道有没有更优化的方法。
我用FLEX+JAVA开发了一个工作日的维护模块。JAVA部分提供工作时间的算法。AS部分的com.ll19.workday.util.WorkdayGlobal是一个“接口地址配置类“。可以直接更改这里重新编译,或者用参数对应其中变量来配置这些接口地址和站点的ROOT地址。注释中有详细的说明此地址应该返回的字符流类型和具体内容以供参考~
- 演示地址 -(注意只是维护界面的演示,具体维护功能请参考接口地址配置类中的注释自行开发。) - 源码下载 -
以下为时间计算部分的代码(JAVA):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | /*** * * 得到两个时间内的工作时间和工作日 * 返回的工作日和工作时间用","相隔 * * @param startTime 前时间 yyyyMMddHHmmss * @param endTime 后时间 yyyyMMddHHmmss */ public static String getWorkDayAndTime(String startTime, String endTime) throws Exception { //可以根据以下取得当前年及结束年的工作日和节假日 //String startYear = startTime.substring(0, 4); //String endYear = endTime.substring(0, 4); // 工作日 int workDay = 0; // 工作时间 long workTime = 0; // 计算工作时间用 int workDayN = 0; // 第一天的工作时间 long workTimeStart = 0; // 最后一天的工作时间 long workTimeEnd = 0; // 默认两天休息日 0 1 2 3 4 5 6 代表 周日 周一 到周六 int holiday1 = 0; int holiday2 = 6; // 特殊的工作日和节假日 yyyyMMdd ArrayList workDayList = new ArrayList(); workDayList.add("20091009"); workDayList.add("20091010"); ArrayList holiDayList = new ArrayList(); holiDayList.add("20091001"); holiDayList.add("20091002"); holiDayList.add("20091003"); holiDayList.add("20091004"); // 默认每天工作时间 秒 int defaultWorkDayTime = 8 * 3600; // 每天工作开始结束时间 类型HHmm String ams = "8000"; String ame = "1200"; String pms = "0100"; String pme = "0500"; SimpleDateFormat myFormatter = new SimpleDateFormat("yyyyMMdd"); try { Date startDate = myFormatter.parse(startTime.substring(0, 8)); Date endDate = myFormatter.parse(endTime.substring(0, 8)); // 日历 GregorianCalendar gc = new GregorianCalendar(); // 设定日历的时间 gc.setTime(startDate); // 两个日期相差的天数 long time = endDate.getTime() - startDate.getTime(); if (time < 0) { // 如果前日期大于后日期 return "0,0"; } long day = time / 3600000 / 24 + 1; for (int i = 0; i < day; i++) { // 即每加一天比较一次是否为工作日 if (WorkTimeTools.isWeekday(gc, workDayList, holiDayList, holiday1, holiday2)) { workDay++; workDayN++; if (day == 1) { workDayN = 0; workTime = WorkTimeTools.dayTime(ams, ame, pms, pme, startTime.substring(8, 12), endTime.substring( 8, 12), "oneDay"); } else { // 计算第一天和最后一天的工作时间 if (i == 0) { workDayN--; workTimeStart = WorkTimeTools.dayTime(ams, ame, pms, pme, startTime.substring(8, 12), "", "start"); } else if (i == (day - 1)) { workDayN--; workTimeEnd = WorkTimeTools.dayTime(ams, ame, pms, pme, "", endTime.substring(8, 12), "end"); } } } // 往后加1天 gc.add(GregorianCalendar.DATE, 1); } } catch (Exception e) { e.printStackTrace(); return "0,0"; } workTime += workDayN * defaultWorkDayTime + workTimeStart + workTimeEnd; return workDay + "," + workTime; } |
FLASH的MYSQL驱动的ASSQL记录




(暂时没有评分)FLASH MYSQL驱动 ASSQL记录.
这是一个可以直接从FLASH连MYSQL的开源项目“ASSQL”,官方的使用方法:http://code.google.com/p/assql/wiki/Examples#Inserting_Binary_Data_Example
下载:http://code.google.com/p/assql/
于是就想自己用用试试,开始做的时候想的很简单,解析下WP的配置文件(简单解析下字符串得到想要的配置而已)用FLASH直接读取文章,做一个WORDPRESS每个月归档的例子。后来在传到站点测试的时候才发现很多的问题,一开始想的太简单,FLASH去连数据库,就相当于从客户端直接连数据库了。(所以FLASH确实解析不了WP的配置 – -,我把它当JAVA或者PHP了,居然就这么把自己搞混了~)
还有就是安全方面的问题,也许这个SQL驱动的作者想到了这些安全问题,不过从客户端直接用用户密码链接数据库还是觉得会有安全隐患,并且如果数据库服务器对访问IP做了限制也会连接不上。
所以最后得出总结:也许FLASH真的没必要去(或者说是不应该)直接去连数据库,这放上来成了一个测试客户端能不能直连数据库的程序了(可能因为我写AS仅是自己的喜好觉得只能这么用,也许真在项目中使用的话结合项目的WEB配置会是不同的用法),提供这个例子的代码(前后思路不一样 最后写的比较乱 ),例子请编译flex_ll19_wp_archives文件夹下的mxml。其余两个包assql是as的SQL驱动包,ll19_core是一个自己用的核心包。
可以通过参数简单配置这个例子:参数panelBorderColor=0×000000表示panel的borderColor,buttonBorderColor=0×000000是两个按钮的borderColor。
Random Posts
- FLV PLAYER(AS2)+
提供FLASH-FLV播放器源文... 移动到这里写下对播放器的建议和BUG[!!] ...
- 动态加载的TREE
FLEX开发的一个简单的动态加载子节点的TREE. 做了一个动态加载子...
- 360° FLASH MP3播放器-19~waveCircle
提供下载:360° FLASH MP3播放器-19~waveCircle,此播放器包括了歌词同步和很炫的波谱效果...
- FC快速通关视频
FC:CPU主频:1.79 Mhz、内存(RAM):16 Kbit (2KB)、显存(VRAM):1...
- 做了一道Java逻辑题
题目:有一种体育竞赛共含M个项目,有运动员A,B,C参加,在每一项目中,第一,第二,第三名分别的X,Y,Z分,其中X,Y...
- Web2.0Link.
来自于go2web20.net,最喜欢他的TAGS,生成XML设置节点的TAG属性便能方便的分类查找。 编译了这个...

