DB2获取有效工作时长函数(排除节假日、排除午休时间)
CREATE OR REPLACE FUNCTION DIFFHOURTIME_WITHOUTHOLIDAY_FUN (
STARTTIME VARCHAR(20),
ENDTIME VARCHAR(20) )
RETURNS DOUBLE
LANGUAGE SQL
NOT DETERMINISTIC
EXTERNAL ACTION
READS SQL DATA
INHERIT SPECIAL REGISTERS
------------------------------------------------------------------------
-- FUNCTION:DIFFHOURTIME_WITHOUTHOLIDAY_FUN
-- 说明:获取2个时间之前的有效工作时间,单位为小时,去除节假日,每天按8小时计算,
-- 传入的开始时间必须小于等于传入的结束时间
-- 表holidays_settings为节假日设置表,holiday为节假日日期,如:2015-01-01
------------------------------------------------------------------------
BEGIN ATOMIC
DECLARE start_holiday INTEGER;--开始时间是否为节假日,是则返回1,不是则返回0
DECLARE end_holiday INTEGER;--结束时间是否为节假日,是则返回1,不是则返回0
DECLARE holidays INTEGER;--开始时间与结束时间之间的节假日天数,包含开始、结束时间
DECLARE start_time timestamp;--开始时间转化为时间格式
DECLARE end_time timestamp;--结束时间转化为时间格式
DECLARE start_work_first timestamp;--开始时间当天的上班时间,目前为08:30
DECLARE start_noon_start timestamp;--当天的午休开始时间,目前为12:00
DECLARE start_noon_end timestamp;--当天的午休结束时间,目前为13:30
DECLARE start_work_end timestamp;--开始时间当天的下班时间,目前为18:00
DECLARE end_work_first timestamp;--结束时间当天的上班时间,目前为08:30
DECLARE end_noon_start timestamp;--当天的午休开始时间,目前为12:00
DECLARE end_noon_end timestamp;--当天的午休结束时间,目前为13:30
DECLARE end_work_end timestamp;--结束时间当天的下班时间,目前为18:00
DECLARE diff_date DOUBLE;--开始时间与结束时间的相差天数
DECLARE noon_difftime double;--当天的午休时间
SET start_holiday = (SELECT count (*) FROM holidays_settings WHERE holiday = date (STARTTIME));
SET end_holiday = (SELECT count (*) FROM holidays_settings WHERE holiday = date (ENDTIME));
SET holidays = (SELECT count (*) FROM holidays_settings WHERE holiday BETWEEN date (STARTTIME) AND date (ENDTIME));
SET start_time = timestamp (STARTTIME);
SET end_time = timestamp (ENDTIME);
SET start_work_first = timestamp (SUBSTR (char (STARTTIME), 1, 10) || ' 08:30:00');
SET start_work_end = timestamp (SUBSTR (char (STARTTIME), 1, 10) || ' 18:00:00');
SET start_noon_start = timestamp (SUBSTR (to_char(STARTTIME,'yyyy-mm-dd hh24:mi:ss'), 1, 10) || ' 12:00:00');
SET start_noon_end = timestamp (SUBSTR (to_char(STARTTIME,'yyyy-mm-dd hh24:mi:ss'), 1, 10) || ' 13:30:00');
SET end_work_first = timestamp (SUBSTR (char (ENDTIME), 1, 10) || ' 08:30:00');
SET end_work_end = timestamp (SUBSTR (char (ENDTIME), 1, 10) || ' 18:00:00');
SET end_noon_start = timestamp (SUBSTR (to_char(ENDTIME,'yyyy-mm-dd hh24:mi:ss'), 1, 10) || ' 12:00:00');
SET end_noon_end = timestamp (SUBSTR (to_char(ENDTIME,'yyyy-mm-dd hh24:mi:ss'), 1, 10) || ' 13:30:00');
SET diff_date = cast ( timestampdiff (16,char (timestamp (SUBSTR (char (ENDTIME), 1, 10)) - timestamp (SUBSTR (char (STARTTIME), 1, 10)))) AS DECIMAL (20, 2));
SET noon_difftime = cast (timestampdiff (2,char (end_noon_end - end_noon_start)) AS DECIMAL (20, 2)); IF date (STARTTIME) = date (ENDTIME)--如果开始时间=结束时间
THEN
IF start_holiday > 0--开始时间为节假日,返回0小时
THEN
RETURN 0;
ELSE--开始时间不是节假日
IF start_time - start_work_first < 0--开始时间在上班前
THEN
IF end_time - end_work_first < 0--开始时间在上班前,结束时间也在上班前返回0小时
THEN
RETURN 0;
ELSEIF end_time - end_noon_start < 0--开始时间在上班前,结束时间在上午上班时间内,返回时间为结束时间-上班时间
THEN
RETURN cast (
timestampdiff (
2,
char (end_time - end_work_first)) AS DECIMAL (20, 2))
/ 3600;
ELSEIF end_time - end_noon_end <0 --开始时间在上班前,结束时间午休内,返回时间为午休开始时间-上班时间
THEN
RETURN cast (
timestampdiff (
2,
char (end_noon_start - end_work_first)) AS DECIMAL (20, 2))
/ 3600;
ELSEIF end_time - end_work_end <0 --开始时间在上班前,结束时间在下午上班时间内,返回时间为结束时间-上班时间-午休时间
THEN
RETURN (cast (
timestampdiff (
2,
char (end_time - end_work_first)) AS DECIMAL (20, 2))-noon_difftime)
/ 3600;
ELSE--开始时间在上班前,结束时间在下班后,返回时间8小时
RETURN 8;
END IF;
ELSEIF start_time - start_noon_start < 0 --开始时间在上午上班时间内
THEN
IF end_time - end_noon_start < 0 --开始时间在上午上班时间内,结束时间在上午上班时间内,返回时间为结束时间-开始时间
THEN
RETURN cast (
timestampdiff (
2,
char (end_time - start_time)) AS DECIMAL (20, 2))
/ 3600;
ELSEIF end_time - end_noon_end < 0 --开始时间在上午上班时间内,结束时间在午休内,返回时间为午休开始时间-开始时间
THEN
RETURN cast (
timestampdiff (
2,
char (end_noon_start - start_time)) AS DECIMAL (20, 2))
/ 3600;
ELSEIF end_time - end_work_end < 0 --开始时间在上午上班时间内,结束时间下午上班时间内,返回时间为结束时间-开始时间-午休时间
THEN
RETURN (cast (
timestampdiff (
2,
char (end_time - start_time)) AS DECIMAL (20, 2))-noon_difftime)
/ 3600;
ELSE --开始时间在上午上班时间内,结束时间在下班时间,返回时间为下午下班时间-开始时间-午休时间
RETURN (cast (
timestampdiff (
2,
char (end_work_end - start_time)) AS DECIMAL (20, 2))-noon_difftime)
/ 3600;
END IF;
ELSEIF start_time - start_noon_end <0 --开始时间在午休时间内
THEN
IF end_time - end_noon_end<0 --结束时间也在午休时间内
THEN
RETURN 0;
ELSEIF end_time - end_work_end<0 --结束时间在下午上班时间内,返回时间为结束时间-午休结束时间
THEN
RETURN cast (
timestampdiff (
2,
char (end_time - end_noon_end)) AS DECIMAL (20, 2))
/ 3600;
ELSE --结束时间在下午下班后,返回时间为结束时间下午下班时间-午休结束时间
RETURN cast (
timestampdiff (
2,
char (end_work_end - end_noon_end)) AS DECIMAL (20, 2))
/ 3600;
END IF;
ELSEIF start_time - start_work_end <0 --开始时间在下午上班时间内
THEN
IF end_time - end_work_end <0 --结束时间在下午上班时间内,返回时间为结束时间-开始时间
THEN
RETURN cast (
timestampdiff (
2,
char (end_time - start_time)) AS DECIMAL (20, 2))
/ 3600;
ELSE --结束时间在下午下班后,返回时间为下班时间-开始时间
RETURN cast (
timestampdiff (
2,
char (end_work_end - start_time)) AS DECIMAL (20, 2))
/ 3600;
END IF;
ELSE --开始时间在下班后,结束时间也肯定在下班后,返回0
RETURN 0;
END IF;
END IF;
ELSE --开始时间与结束时间不是一天
IF start_holiday > 0 --开始时间为节假日
THEN
IF end_holiday > 0 --结束时间为节假日,返回时间为(结束与开始天数差-中间节假日天数+1)*8
THEN
RETURN (diff_date - holidays + 1) * 8;
ELSE --结束时间不为节假日
IF end_time - end_work_first < 0 --结束时间在上班时间前,返回时间为(结束与开始天数差-中间节假日天数)*8
THEN
RETURN (diff_date - holidays) * 8;
ELSEIF end_time - end_noon_start < 0 --结束时间在上午上班时间内,返回时间为(结束与开始天数差-中间节假日天数)*8+(结束时间-上班时间)
THEN
RETURN (diff_date - holidays) * 8
+ cast (
timestampdiff (
2,
char (endtime - end_work_first)) AS DECIMAL (20, 2))
/ 3600;
ELSEIF end_time - end_noon_end < 0 --结束时间在午休内,返回时间为(结束与开始天数差-中间节假日天数)*8+(午休开始时间-上午上班时间)
THEN
RETURN (diff_date - holidays) * 8
+ cast (
timestampdiff (
2,
char (end_noon_start - end_work_first)) AS DECIMAL (20, 2))
/ 3600;
ELSEIF end_time - end_work_end < 0--结束时间在下午上班时间内,返回时间为(结束与开始天数差-中间节假日天数)*8+(结束时间-结束时间的上班时间-午休时间)
THEN
RETURN (diff_date - holidays) * 8
+ (cast (
timestampdiff (
2,
char (end_time - end_work_first)) AS DECIMAL (20, 2))-noon_difftime)
/ 3600;
ELSE --结束时间大于下班时间,算一天,返回时间为(结束与开始天数差-中间节假日天数+1)*8
RETURN (diff_date - holidays + 1) * 8;
END IF;
END IF;
ELSE --开始时间不为节假日
IF end_holiday > 0 --结束时间为节假日
THEN
IF start_time - start_work_first < 0 --开始时间小于上班时间,算一天,返回时间为(结束与开始天数差-中间节假日天数+1)*8
THEN
RETURN (diff_date - holidays + 1) * 8;
ELSEIF start_time - start_noon_start < 0 --开始时间在上午上班时间内,返回时间为(结束与开始天数差-中间节假日天数)*8+(开始时间下班时间-开始时间-午休时间)
THEN
RETURN (diff_date - holidays) * 8
+ (cast (
timestampdiff (
2,
char (start_work_end - start_time)) AS DECIMAL (20, 2))-noon_difftime)
/ 3600;
ELSEIF start_time - start_noon_end < 0 --开始时间在午休时间内,返回时间为(结束与开始天数差-中间节假日天数)*8+(开始时间下班时间-午休结束时间)
THEN
RETURN (diff_date - holidays) * 8
+ cast (
timestampdiff (
2,
char (start_work_end - start_noon_end)) AS DECIMAL (20, 2))
/ 3600;
ELSEIF start_time - start_work_end < 0 --开始时间在下午上班时间内,返回时间为(结束与开始天数差-中间节假日天数)*8+(开始时间下班时间-开始时间)
THEN
RETURN (diff_date - holidays) * 8
+ cast (
timestampdiff (
2,
char (start_work_end - start_time)) AS DECIMAL (20, 2))
/ 3600;
ELSE --开始时间大于下班时间,返回时间为(结束与开始天数差-中间节假日天数)*8
RETURN (diff_date - holidays) * 8;
END IF;
ELSE --结束时间不为节假日,以开始时间为参照,列出不同开始时间下、不同结束时间下应该返回的时间
IF start_time - start_work_first < 0 --开始时间小于上班时间
THEN
IF end_time - end_work_first < 0 --结束时间小于上班时间,返回时间为(结束与开始天数差-中间节假日天数)*8
THEN
RETURN (diff_date - holidays) * 8;
ELSEIF end_time - end_noon_start < 0 --结束时间在上午上班时间内,返回时间为(结束与开始天数差-中间节假日天数)*8+(结束时间-结束时间上班时间)
THEN
RETURN (diff_date - holidays) * 8
+ cast (
timestampdiff (
2,
char (end_time - end_work_first)) AS DECIMAL (20, 2))/ 3600;
ELSEIF end_time - end_noon_end < 0 --结束时间在午休时间内,返回时间为(结束与开始天数差-中间节假日天数)*8+(午休开始时间-结束时间上班时间)
THEN
RETURN (diff_date - holidays) * 8
+ cast (
timestampdiff (
2,
char (end_noon_start - end_work_first)) AS DECIMAL (20, 2))/ 3600;
ELSEIF end_time - end_work_end < 0 --结束时间在下午上班时间内,返回时间为(结束与开始天数差-中间节假日天数)*8+(结束时间-上班时间-午休时间)
THEN
RETURN (diff_date - holidays) * 8
+ (cast (
timestampdiff (
2,
char (end_time - end_work_first)) AS DECIMAL (20, 2))-noon_difftime)/ 3600;
ELSE --结束时间大于下班时间,算一天,返回时间为(结束与开始天数差-中间节假日天数+1)*8
RETURN (diff_date - holidays + 1) * 8;
END IF;
ELSEIF start_time - start_noon_start < 0--开始时间在上午上班时间内
THEN
IF end_time - end_work_first < 0 --结束时间小于上班时间,返回时间为(结束与开始天数差-中间节假日天数- 1)*8+(开始时间的下班时间-开始时间-午休时间)
THEN
RETURN (diff_date - holidays- 1) * 8+ (cast (
timestampdiff (
2,
char (start_work_end - start_time)) AS DECIMAL (20, 2))-noon_difftime)/ 3600;
ELSEIF end_time - end_noon_start < 0 --结束时间在上午上班时间内,返回时间为(结束与开始天数差-中间节假日天数-1)*8+(开始时间的下班时间-开始时间-午休时间)+(结束时间-结束时间上班时间)
THEN
RETURN (diff_date - holidays- 1) * 8+ (cast (
timestampdiff (
2,
char (start_work_end - start_time)) AS DECIMAL (20, 2))-noon_difftime)/ 3600
+ cast (
timestampdiff (
2,
char (end_time - end_work_first)) AS DECIMAL (20, 2))/ 3600;
ELSEIF end_time - end_noon_end < 0 --结束时间在午休时间内,返回时间为(结束与开始天数差-中间节假日天数-1)*8+(开始时间的下班时间-开始时间-午休时间)+(午休开始时间-结束时间上班时间)
THEN
RETURN (diff_date - holidays- 1) * 8
+ (cast (
timestampdiff (
2,
char (start_work_end - start_time)) AS DECIMAL (20, 2))-noon_difftime)/ 3600
+ cast (
timestampdiff (
2,
char (end_noon_start - end_work_first)) AS DECIMAL (20, 2))/ 3600;
ELSEIF end_time - end_work_end < 0 --结束时间在下午上班时间内,返回时间为(结束与开始天数差-中间节假日天数-1)*8+(开始时间的下班时间-开始时间-午休时间)+(结束时间-上班时间-午休时间)
THEN
RETURN (diff_date - holidays- 1) * 8
+ (cast (
timestampdiff (
2,
char (start_work_end - start_time)) AS DECIMAL (20, 2))-noon_difftime)/ 3600
+ (cast (
timestampdiff (
2,
char (end_time - end_work_first)) AS DECIMAL (20, 2))-noon_difftime)/ 3600;
ELSE --结束时间大于下班时间,算一天,返回时间为(结束与开始天数差-中间节假日天数-1+1)*8+(开始时间的下班时间-开始时间-午休时间)
RETURN (diff_date - holidays ) * 8
+ (cast (
timestampdiff (
2,
char (start_work_end - start_time)) AS DECIMAL (20, 2))-noon_difftime)/ 3600;
END IF;
ELSEIF start_time - start_noon_end < 0--开始时间在午休时间内
THEN
IF end_time - end_work_first < 0 --结束时间小于上班时间,返回时间为(结束与开始天数差-中间节假日天数- 1)*8+(开始时间的下班时间-午休结束时间)
THEN
RETURN (diff_date - holidays- 1) * 8+ (cast (
timestampdiff (
2,
char (start_work_end - start_noon_end)) AS DECIMAL (20, 2)))/ 3600;
ELSEIF end_time - end_noon_start < 0 --结束时间在上午上班时间内,返回时间为(结束与开始天数差-中间节假日天数-1)*8+(开始时间的下班时间-午休结束时间)+(结束时间-结束时间上班时间)
THEN
RETURN (diff_date - holidays- 1) * 8+ (cast (
timestampdiff (
2,
char (start_work_end - start_noon_end)) AS DECIMAL (20, 2)))/ 3600
+ cast (
timestampdiff (
2,
char (end_time - end_work_first)) AS DECIMAL (20, 2))/ 3600;
ELSEIF end_time - end_noon_end < 0 --结束时间在午休时间内,返回时间为(结束与开始天数差-中间节假日天数-1)*8+(开始时间的下班时间-午休结束时间)+(午休开始时间-结束时间上班时间)
THEN
RETURN (diff_date - holidays- 1) * 8
+ (cast (
timestampdiff (
2,
char (start_work_end - start_noon_end)) AS DECIMAL (20, 2)))/ 3600
+ cast (
timestampdiff (
2,
char (end_noon_start - end_work_first)) AS DECIMAL (20, 2))/ 3600;
ELSEIF end_time - end_work_end < 0 --结束时间在下午上班时间内,返回时间为(结束与开始天数差-中间节假日天数-1)*8+(开始时间的下班时间-午休结束时间)+(结束时间-上班时间-午休时间)
THEN
RETURN (diff_date - holidays- 1) * 8
+ (cast (
timestampdiff (
2,
char (start_work_end - start_noon_end)) AS DECIMAL (20, 2)))/ 3600
+ (cast (
timestampdiff (
2,
char (end_time - end_work_first)) AS DECIMAL (20, 2))-noon_difftime)/ 3600;
ELSE --结束时间大于下班时间,算一天,返回时间为(结束与开始天数差-中间节假日天数-1+1)*8+(开始时间的下班时间-午休结束时间)
RETURN (diff_date - holidays ) * 8
+ (cast (
timestampdiff (
2,
char (start_work_end - start_noon_end)) AS DECIMAL (20, 2)))/ 3600;
END IF;
ELSEIF start_time - start_work_end < 0--开始时间在下午上班时间内
THEN
IF end_time - end_work_first < 0 --结束时间小于上班时间,返回时间为(结束与开始天数差-中间节假日天数-1)*8+(开始时间下班时间-开始时间)
THEN
RETURN (diff_date - holidays - 1) * 8
+ (cast (
timestampdiff (
2,
char (start_work_end - start_time)) AS DECIMAL (20, 2)))/ 3600;
ELSEIF end_time - end_noon_start < 0 --结束时间在上午上班时间内,返回时间为(结束与开始天数差-中间节假日天数-1)*8+(开始时间下班时间-开始时间)+(结束时间-结束时间上班时间)
THEN
RETURN (diff_date - holidays - 1) * 8
+ (cast (
timestampdiff (
2,
char (start_work_end - start_time)) AS DECIMAL (20, 2)))/ 3600
+ (cast (
timestampdiff (
2,
char (end_time - end_work_first)) AS DECIMAL (20, 2)))/ 3600 ;
ELSEIF end_time - end_noon_end < 0 --结束时间在午休时间内,返回时间为(结束与开始天数差-中间节假日天数-1)*8+(开始时间下班时间-开始时间)+(结束时间午休开始时间-结束时间上午上班时间)
THEN
RETURN (diff_date - holidays - 1) * 8
+ (cast (
timestampdiff (
2,
char (start_work_end - start_time)) AS DECIMAL (20, 2)))/ 3600
+ (cast (
timestampdiff (
2,
char (end_noon_start - end_work_first)) AS DECIMAL (20, 2)))/ 3600 ;
ELSEIF end_time - end_work_end < 0 --结束时间下午上班时间内,返回时间为(结束与开始天数差-中间节假日天数-1)*8+(开始时间下班时间-开始时间)+(结束时间-结束时间上午上班时间-午休时间)
THEN
RETURN (diff_date - holidays - 1) * 8
+ (cast (
timestampdiff (
2,
char (start_work_end - start_time)) AS DECIMAL (20, 2)))/ 3600
+ (cast (
timestampdiff (
2,
char (end_time - end_work_first)) AS DECIMAL (20, 2))-noon_difftime)/ 3600;
ELSE --结束时间大于下班时间,算一天,返回时间为(结束与开始天数差-中间节假日天数-1+1)*8+(开始时间下班时间-开始时间)
RETURN (diff_date - holidays) * 8
+ (cast (
timestampdiff (
2,
char (start_work_end - start_time)) AS DECIMAL (20, 2)))/ 3600;
END IF;
ELSE --开始时间大于下班时间
IF end_time - end_work_first < 0 --结束时间小于上班时间,返回时间为(结束与开始天数差-中间节假日天数-1)*8
THEN
RETURN (diff_date - holidays - 1) * 8;
ELSEIF end_time - end_noon_start < 0 --结束时间在上午上班时间内,返回时间为(结束与开始天数差-中间节假日天数-1)*8+(结束时间-结束时间上班时间)
THEN
RETURN (diff_date - holidays - 1) * 8
+ (cast (
timestampdiff (
2,
char (end_time - end_work_first)) AS DECIMAL (20, 2)))/ 3600 ;
ELSEIF end_time - end_noon_end < 0 --结束时间在午休时间内,返回时间为(结束与开始天数差-中间节假日天数-1)*8+(结束时间午休开始时间-结束时间上午上班时间)
THEN
RETURN (diff_date - holidays - 1) * 8
+ (cast (
timestampdiff (
2,
char (end_noon_start - end_work_first)) AS DECIMAL (20, 2)))/ 3600 ;
ELSEIF end_time - end_work_end < 0 --结束时间下午上班时间内,返回时间为(结束与开始天数差-中间节假日天数-1)*8+(结束时间-结束时间上午上班时间-午休时间)
THEN
RETURN (diff_date - holidays - 1) * 8
+ (cast (
timestampdiff (
2,
char (end_time - end_work_first)) AS DECIMAL (20, 2))-noon_difftime)/ 3600;
ELSE --结束时间大于下班时间,算一天,返回时间为(结束与开始天数差-中间节假日天数-1+1)*8
RETURN (diff_date - holidays) * 8;
END IF;
END IF;
END IF;
END IF;
END IF;
END;
需要建一张表holidays_settings配置节假日,然后就可以使用了。
DB2获取有效工作时长函数(排除节假日、排除午休时间)的更多相关文章
- windows server 2008 R2服务器无法通过ShellClass获取mp3音乐时长
我们先看一段代码,获取mp3播放时长: #region GetMediaDetailInfo 获取媒体文件属性信息 /// <summary> /// 获取媒体文件属性信息 /// < ...
- iOS:Gif动画功能(显示gif动画、获取gif动画时长、获取gif动画执行次数)
一.简单介绍 gif动画是iOS开发中很常用的一个功能,有的是为了显示加载视频的过程,更多的是为了显示一个结果状态(动画更直观). 那么如何执行gif动画,方法有很多.(这里只写一下方法三,前两种之前 ...
- java获取Mp3播放时长
最近有一个用java获取mp3播放时长的需求,有两种,一种本地文件,一种网络文件,其中获取网络mp3播放时间的方法找了挺久终于找到个能用的了. 第一种很简单,下载个jar包 jaudiotagger ...
- Android获取视频音频的时长的方法
android当中获取视频音频的时长,我列举了三种. 1:获取视频URI后获取cursor cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore ...
- 【Android端 APP 启动时长获取】启动时长获取方案及具体实施
一.什么是启动时长? 1.启动时长一般包括三种场景,分别是:新装包的首次启动时长,冷启动时长.热启动时长 冷启动 和 热启动 : (1)冷启动:当启动应用时,后台没有该程序的进程,此时启动的话系统会分 ...
- asp.net 获取音视频时长 的方法
http://www.evernote.com/l/AHPMEDnEd65A7ot_DbEP4C47QsPDYLhYdYg/ 日志: 1.第一种方法: 调用:shell32.dll ,win7 ...
- asp.net 获取mp3 播放时长
1 Shell32 //添加引用:COM组件的Microsoft Shell Controls And Automation //然后引用 using Shell32; //如果出现“无法嵌入互操作类 ...
- Shell32.ShellClass服务器操作系统无法获取 音频文件时长问题
前言: 上传音频文件,自动写入此音频文件的时长,这里用 COM组件Microsoft Shell Controls And Automation来实现. 首先 1.引用:Microsoft Shell ...
- java 获取音频文件时长
需要导入jar包:jave 1.0.2 jar 如果是maven项目,在pom.xml文件中添加: <dependency> <groupId>it.sauronsoftwar ...
随机推荐
- Java时间的处理
1. Java计算时间依靠1970年1月1日开始的毫秒数.2. Date类的构造函数Date()返回代表当前创建的时刻的对象.Date的方法getTime()返回一个long值在数值上等于1970年1 ...
- ubuntu12.04 安装 QQ
友情提示:QQ对于第三方平台封杀已经到了丧心病狂的程度,所以不要妄想在linux的QQ能像win系统下的效果,只能祈求能用就好 1.下载QQ安装包 http://pan.baidu.com/s/1ge ...
- Node聊天程序实例04:chat_ui.js
作者:vousiu 出处:http://www.cnblogs.com/vousiu 本实例参考自Mike Cantelon等人的<Node.js in Action>一书. 这个程序在客 ...
- spring4+websocket+nginx详细配置
实现的版本jdk1.7.0_25, tomcat7.0.47.0, Tengine/2.1.1 (nginx/1.6.2), servlet3.0, spring4.2.2 使用maven导入版本3. ...
- 修改CMD字符编码
1.参考网址: 1.1.http://blog.useasp.net/archive/2012/04/24/how_to_use_UTF8_encoding_in_Windows_CMD.aspx 1 ...
- Vim 常用技巧:
Vim 常用技巧: 将回车由默认的8个空格改为4个空格: 命令:set sw=4 修改tab为4空格: 命令:set ts=4 设置每一级的缩进长度: 命令:set shiftwidth=4 设置文件 ...
- CSS选择器--普通选择器
普通选择器: 1.标签选择器:使用标签选择器,所有的相同的标签都会被选中.(如:选择div所有的div都被选中.) 2.类选择器:如果一个元素设置了多个类选择器样式,那么这些类选择器都会被设置.但是如 ...
- [重要公告] 关于禁止发布Windows系统及非法激活软件的通知
Skyfree 发表于 2013-11-15 09:45:17 https://www.itsk.com/thread-306891-1-1.html 接微软方面法务通知,要求删除涉及发布Win8/8 ...
- h5
1. 在iPhone 手机上默认值是(电话号码显示为拨号的超链接): <meta name="format-detection" content="telephon ...
- yii2-basic后台管理功能开发之五:用户权限的控制
需求:后台有两种权限+管理员+用户 区别:可以访问的页面不同 解决方法:用户表添加role字段,使用到的是yii2 存取控制过滤器(ACF)方法. >1在web.php中配置授权的类,有两种,我 ...