javascript - 关于请假时间计算问题
首先说一下请假规则吧:
1、上午请假的,时长不得小于3小时
2、下午请假的,时长不得小于5小时
3、工作时间:9:00~18:00
4、中午有一小时非工作时间
因为公司的制度,加班没有加班费但是可以调休,所以时间必须精确到小时。那么问题来了:
1、如果我请假的时间跨度是上午到下午满足规则,但是系统计算时间会多一小时:
我的解决方法是:首先判断开始和节时间是否为同一天,再判断开始时间是否为上午,结束时间是否为下午,如果都满足,那么系统计算的时间再减去一小时
2、如果有些人傻,选择开始和结束时间的时候超出了工作时间,比如结束时间是18:00以后,那么又要判断是否要扣除18:00以后的时间
3、最麻烦的就是跨天,如果假期中包含法定假日、双休等特殊情况。还有非整数跨天,比如只请到三天后的上午11点,那么三天后的0:00~9:00这段时间怎么去掉
思绪有些混乱,还请有经验的前辈给分享一下经验,谢谢!!
回复内容:
首先说一下请假规则吧:
1、上午请假的,时长不得小于3小时
2、下午请假的,时长不得小于5小时
3、工作时间:9:00~18:00
4、中午有一小时非工作时间
因为公司的制度,加班没有加班费但是可以调休,所以时间必须精确到小时。那么问题来了:
1、如果我请假的时间跨度是上午到下午满足规则,但是系统计算时间会多一小时:
我的解决方法是:首先判断开始和节时间是否为同一天,再判断开始时间是否为上午,结束时间是否为下午,如果都满足,那么系统计算的时间再减去一小时
2、如果有些人傻,选择开始和结束时间的时候超出了工作时间,比如结束时间是18:00以后,那么又要判断是否要扣除18:00以后的时间
3、最麻烦的就是跨天,如果假期中包含法定假日、双休等特殊情况。还有非整数跨天,比如只请到三天后的上午11点,那么三天后的0:00~9:00这段时间怎么去掉
思绪有些混乱,还请有经验的前辈给分享一下经验,谢谢!!
跨天,其实和当天,没区别,反正每天请假的时间都是9点到18点
先判断
(开始-结束)/(24X3600)=天数,如果大于1,就说明是跨天的如:2016-08-30 10:30-2016-09-04 12:00,其实只要计算08-30和09-04这两天的情况就好了,中间那几天7*3=21小时
某天(上班+请假)
无非几种情况,早上请假,下午请假,早上跨到下午
那if条件就麻烦了点
结束时间 开始时间 >= 13点 && 结束时间
剩下的基本就是跨段的,跨段分上午和下午来计算就好了。
0-9,12-13,18-0的时间段,有交叉的部分不计算就好了
<code>你首先需要一个排班表用于判断是否是工作日。 如果小于9点,=9点,大于18点=18点,再用你1里面说的方法不久完了。</code>

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

登录 CakePHP 是一项非常简单的任务。您只需使用一项功能即可。您可以记录任何后台进程(如 cronjob)的错误、异常、用户活动、用户采取的操作。在 CakePHP 中记录数据很容易。提供了 log() 函数

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写
