计算加班类型以及小时数(js)
function GetDateDiff(startTime, endTime, diffType) {
//将xxxx-xx-xx的时间格式,转换为 xxxx/xx/xx的格式
startTime = startTime.replace(/\-/g, "/");
endTime = endTime.replace(/\-/g, "/");
//将计算间隔类性字符转换为小写
diffType = diffType.toLowerCase();
var sTime = new Date(startTime); //开始时间
var eTime = new Date(endTime); //结束时间
//作为除数的数字
var timeType = 1;
switch (diffType) {
case "second":
timeType = 1000;
break;
case "minute":
timeType = 1000 * 60;
break;
case "hour":
timeType = 1000 * 3600;
break;
case "day":
timeType = 1000 * 3600 * 24;
break;
default:
break;
}
return parseFloat((eTime.getTime() - sTime.getTime()) / parseFloat(timeType));
}
function Fun_GetJiaBanTypeTatalHour(vstartdate, vstarthour, vstartmin, venddate, vendhour, vendmin) {
if (GetDateDiff(vstartdate, venddate, "day") > 1) {
alert("填写的加班时间已大于24小时,请检查后重新输入!!!");
return;
}
if (GetDateDiff(vstartdate, venddate, "second") < 0) {
alert("加班开始时间大于加班结束时间,请检查后重新输入!!!");
return;
}
//判断开始日期的日期类型
var CountryHoliday = "2018-01-01, 2018-02-16, 2018-02-17, 2018-02-18, 2018-04-05, 2018-05-01, 2018-06-18, 2018-09-24, 2018-10-01, 2018-10-02, 2018-10-03";
var isCountryHoliday;
var startdate_comebine = vstartdate + " " + vstarthour + ":" + vstartmin;
var venddate_zero = venddate + ' ' + '00:00:00';
var enddate_comebine = venddate + ' ' + vendhour + ':' + vendmin;
var start_end_Hour = GetDateDiff(startdate_comebine, enddate_comebine, "hour");
var start_zero_Hour = GetDateDiff(startdate_comebine, venddate_zero, "hour");
var zero_end_Hour = GetDateDiff(venddate_zero, enddate_comebine, "hour");
var totalhour_holiday; var totalhour_week; var totalhour_day; var start_zero_Hour; var zero_end_Hour; var start_end_Hour;
var isCountryHoliday_startDate;
var isCountryHoliday_endDate;
var isWeek_vstartdate;
var isWeek_venddate;
var CH = CountryHoliday.split(",");
//开始日期是否是法定假日
for (g = 0; g < CH.length; g++) {
if (vstartdate == CH[g]) {
isCountryHoliday_startDate = true;
break;
} else {
isCountryHoliday_startDate = false;
}
}
//结束日期是否是法定假日
for (g = 0; g < CH.length; g++) {
if (venddate == CH[g]) {
isCountryHoliday_endDate = true;
break;
} else {
isCountryHoliday_endDate = false;
}
}
//开始日期是否是周末
var startdate_replace = vstartdate.replace(/-/g, '/');
var startdate_result = new Date("" + startdate_replace + "");
if (startdate_result.getDay() == "0" || startdate_result.getDay() == "6") {
isWeek_vstartdate = true;
} else {
isWeek_vstartdate = false;
}
//结束日期是否是周末
var venddate_replace = venddate.replace(/-/g, '/');
var venddate_result = new Date("" + venddate_replace + "");
if (venddate_result.getDay() == "0" || venddate_result.getDay() == "6") {
isWeek_venddate = true;
} else {
isWeek_venddate = false;
}
//开始日期和结束日期不相同的情况
if (vstartdate != venddate) {
//首先判断开始日期是否是法定假日
if (isCountryHoliday_startDate) {
//开始日期是法定假日 然后判断结束日期是否是法定假日
if (!isCountryHoliday_endDate) {
if (isWeek_venddate) {
alert("结束日期是双休日");
totalhour_week = zero_end_Hour;
totalhour_day = 0; totalhour_holiday = start_zero_Hour;
} else {
//只是工作日
alert("结束日期是工作日");
totalhour_day = zero_end_Hour; totalhour_week = 0; totalhour_holiday = start_zero_Hour;
}
} else {
totalhour_day = 0; totalhour_week = 0; totalhour_holiday = start_end_Hour;
}
} else {
//开始日期不是法定假日 那么开始日期只有两种情况 双休日或者工作日
//--如果开始日期不是法定假日 则判断是否是双休日
if (isWeek_vstartdate) {
//开始日期是双休日
//--继续判断结束日期是否是双休日
if (!isWeek_venddate) {
//结束日期不是双休日
if (isCountryHoliday_endDate) {
// 先判断结束日期是否是法定假日
totalhour_day = 0;
totalhour_week = start_zero_Hour;
totalhour_holiday = zero_end_Hour;
} else {
//结束日期不是法定假日 则结束日期是工作日
totalhour_holiday = 0;
totalhour_week = start_zero_Hour;
totalhour_day = zero_end_Hour;
}
} else {
//结束日期和开始日期类型相同都是双休日
totalhour_day = 0;
totalhour_holiday = 0;
totalhour_week = start_end_Hour;
}
} else {//开始日期是工作日
//如果开始日期不是法定假日 不是双休日,那么开始日期为工作日
//继续判断结束日期 是否为法定假日
if (isCountryHoliday_endDate) {
//结束日期是法定假日
totalhour_week = 0;
totalhour_day = start_zero_Hour;
jiabantype_holiday = zero_end_Hour;
} else {
//结束日期为双休日或者工作日
if (isWeek_venddate) {
//结束日期是双休日
totalhour_day = start_zero_Hour;
totalhour_week = zero_end_Hour;
totalhour_holiday = 0;
} else {
//结束日期是工作日
totalhour_day = start_end_Hour;
totalhour_holiday = 0;
totalhour_week = 0;
}
}
}
}
}
//开始日期和结束日期相同的情况
else {
//是法定假日
if (isCountryHoliday) {
//。。。。。
totalhour_holiday = start_end_Hour; totalhour_day = 0; totalhour_week = 0;
} else {
//判断是否是周末
var sdate_replace = vstartdate.replace(/-/g, '/');
var sdate = new Date("" + sdate_replace + "");
if (sdate.getDay() == "0" || sdate.getDay() == "6") {
//是周末
//计算小时 时差
totalhour_week = start_end_Hour;
totalhour_day = 0; totalhour_holiday = 0;
} else {
//只是工作日
totalhour_day = start_end_Hour; totalhour_week = 0; totalhour_holiday = 0;
}
}
}
//alert("工作日 " + totalhour_day + " 双休日 " + totalhour_week + " 法定假日 " + totalhour_holiday);
document.getElementById('sResult').value= "工作日 " + totalhour_day + "(小时) 双休日 " + totalhour_week + "(小时) 法定假日 " + totalhour_holiday + "(小时)";
}
计算加班类型以及小时数(js)的更多相关文章
- Js计算时间差,天数,小时数,余数
var begintime_ms = Date.parse(new Date(begintime.replace(/-/g, "/"))); //begintime 为开始时间 v ...
- php计算两个时间相差的天数、小时数、分钟数、秒数
$startdate="2011-3-15 11:50:00";//开始时间 $enddate="2012-12-12 12:12:12";//结束时间 $da ...
- MySql计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数
MySql计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数 计算两日期时间之间相差的天数,秒数,分钟数,周数,小时数,这里主要分享的是通过MySql内置的函数 TimeStampDiff() ...
- JS 获取一段时间内的工作时长小时数
本来想是想找轮子的,但是并没有找到能用的,多数都是问题很大,所以就自己写了一个 需求说明 支持自选时间段,即开始时间与结束时间根据用户的上班及下班时间判定返回小时数 技术栈 moment.js 思考过 ...
- oracle中计算两个日期的相差天数、月数、年数、小时数、分钟数、秒数等
oracle如何计算两个日期的相差天数.月数.年数.小时数.分钟数.秒数 1.相差天数(两个日期相减) --Oracle中两个日期相差天数-- select TO_NUMBER(TO_DATE('20 ...
- oracle 求两个时间点直接的分钟、小时数
select )) h, )) m, )) s from gat_data_record gdr where gdr.enddt between to_date('2011-1-1','yyyy-mm ...
- 小程序 js中获取时间new date()的用法(网络复制过来自用)
js中获取时间new date()的用法 获取时间: 1 var myDate = new Date();//获取系统当前时间 获取特定格式的时间: 1 myDate.getYear(); //获 ...
- 支付宝小程序室内地图导航开发-支付宝小程序JS加载esmap地图
如果是微信小程序开发,请参考微信小程序室内地图导航开发-微信小程序JS加载esmap地图文章 一.在支付宝小程序里显示室内三维地图 需要满足的两个条件 调用ESMap室内地图需要用到小程序web-vi ...
- SQL Server时间粒度系列----第6节基于当前日的小时数和分钟数与mysql unix_timestamp和from_unixtime的mssql实现
本文目录列表: 1.基于当前日的小时数和分钟数2.mysql unix_timestamp和from_unixtime的mssql实现 3.总结语 4.参考清单列表 基于当前日的小时数和分钟数 ...
随机推荐
- UVa 202 Repeating Decimals【模拟】
题意:输入整数a和b,输出a/b的循环小数以及循环节的长度 学习的这一篇 http://blog.csdn.net/mobius_strip/article/details/39870555 因为n% ...
- Host status showing red icon in chronograph, Chronograf主机列表页显示主机状态为红色标志
刚开始全部装好的时候主机显示的状态是绿色的,过了些日子我再打开看的时候就变成红色的了,点击主机进去查看的时候没有了图表数据,大概是这样子的, 在influxdb数据库主机上执行命令curl " ...
- PHP DES-ECB加密对接Java解密
最近公司有个业务,需要对接第三方接口,但是参数是需要加密的,对方也只提供了一个java的demo,在网上到处搜索,没有找到直接就能用的方法,后来还是跟公司的Android工程师对接出来的,在这里记录一 ...
- 【Codeforces Round #423 (Div. 2) C】String Reconstruction
[Link]:http://codeforces.com/contest/828/problem/C [Description] 让你猜一个字符串原来是什么; 你知道这个字符串的n个子串; 且知道第i ...
- C# DataTable中按字符串中的数字排序
例如datatable中有一列是门牌号格式是xx-xx-xx,或字符串中含有汉字或其他符号等等,如何按照正确的数字顺序排序呢? 1.获得字符串中的数字. 2.在datatable中添加一列,类型是In ...
- HDU 4462 Scaring the Birds (暴力枚举DFS)
题目链接:pid=4462">传送门 题意:一个n*n的区域,有m个位置是能够放稻草人的.其余都是玉米.对于每一个位置(x,y)所放稻草人都有个作用范围ri, 即abs(x-i)+ab ...
- C. Diverse Permutation(Codeforces Round #275(div2)
C. Diverse Permutation time limit per test 1 second memory limit per test 256 megabytes input standa ...
- xml里面product的值在哪里设置的?
转载请注明出处:http://blog.csdn.net/droyon/article/details/39890469 在进行Android应用程序开发时,善于运用xml中的product配置,能够 ...
- iOS开发系列之四 - UITextView 使用方法小结
// 初始化输入框并设置位置和大小 UITextView *textView = [[UITextView alloc] initWithFrame:CGRectMake(10, 10, 300, 1 ...
- 7.第一次使用java连接mongodb遇到的问题
转自:https://blog.csdn.net/u010523770/article/details/54585883 新版本的mongodb的驱动包是依赖bson.jar和mongodb_driv ...