计算请假申请时长
请假申请时提供一个开始和结束时间,计算这段时间内的上班时间为多少个小时
/*** 计算请假时长,周日不计算* @param startTimeStr* @param endTimeStr* @return*/public double computeWorkTimeLength(String startTimeStr, String endTimeStr){// 获取配置的上班时间、下班时间、午休时间
// String workTimeStart = configService.selectConfigByKey("work.time.start");String workTimeStart = "08:30";
// String workTimeEnd = configService.selectConfigByKey("pm.rest.time.start");String workTimeEnd = "18:00";
// String noonRestTimeStart = configService.selectConfigByKey("noon.rest.time.start");String noonRestTimeStart = "11:40";
// String noonRestTimeEnd = configService.selectConfigByKey("noon.rest.time.end");String noonRestTimeEnd = "14:00";DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");// 将字符串转换为 LocalDateTime 对象LocalDateTime startTime = LocalDateTime.parse(startTimeStr, formatter);LocalDateTime endTime = LocalDateTime.parse(endTimeStr, formatter);// 定义上班时间和下班时间LocalTime workStartTime = LocalTime.parse(workTimeStart);LocalTime workEndTime = LocalTime.parse(workTimeEnd);// 定义午休时间LocalTime wxStartTime = LocalTime.parse(noonRestTimeStart);LocalTime wxEndTime = LocalTime.parse(noonRestTimeEnd);double totalLeaveHours = 0;LocalDate currentDate = startTime.toLocalDate();while (currentDate.isBefore(endTime.toLocalDate()) || currentDate.isEqual(endTime.toLocalDate())) {// 排除周日if (currentDate.getDayOfWeek() != DayOfWeek.SUNDAY) {LocalTime currentDayStartTime = (currentDate.isEqual(startTime.toLocalDate())) ? startTime.toLocalTime() : workStartTime;LocalTime currentDayEndTime = (currentDate.isEqual(endTime.toLocalDate())) ? endTime.toLocalTime() : workEndTime;if (currentDayStartTime.isAfter(currentDayEndTime)) {currentDayStartTime = workStartTime;currentDayEndTime = workEndTime;}// 排除午休时间if (!currentDayStartTime.isAfter(wxEndTime) && !currentDayEndTime.isBefore(wxStartTime)) {// 午休时间包含在调休时间内long workMinutesBeforeRest = Duration.between(currentDayStartTime, wxStartTime).toMinutes();long workMinutesAfterRest = Duration.between(wxEndTime, currentDayEndTime).toMinutes();long totalWorkMinutes = workMinutesBeforeRest + workMinutesAfterRest;// return totalWorkMinutes / 60.0;totalLeaveHours += Math.max(totalWorkMinutes / 60.0, 0);} else {// 午休时间不包含在调休时间内long currentDayWorkMinutes = Duration.between(currentDayStartTime, currentDayEndTime).toMinutes();// return currentDayWorkMinutes / 60.0;totalLeaveHours += Math.max(currentDayWorkMinutes / 60.0, 0);}// long currentDayWorkMinutes = Duration.between(currentDayStartTime, currentDayEndTime).toMinutes() - Duration.between(wxStartTime, wxEndTime).toMinutes();
// totalLeaveHours += Math.max(currentDayWorkMinutes / 60.0, 0);}currentDate = currentDate.plusDays(1);}// 返回时间,并保留两位小数return Math.round(totalLeaveHours * 100.0) / 100.0;}
相关文章:
计算请假申请时长
请假申请时提供一个开始和结束时间,计算这段时间内的上班时间为多少个小时 /*** 计算请假时长,周日不计算* param startTimeStr* param endTimeStr* return*/public double computeWorkTimeLength(String startTimeStr, String endTimeStr){// 获取配置的…...
linux-配置服务器之间 ssh免密登录
前言 在管理多台Linux服务器时,为了方便操作和自动化任务,实现服务器之间的SSH免密登录是非常有必要的。SSH免密登录可以避免每次远程连接时输入密码,大大提高效率。本文将详细介绍SSH免密登录的原理和实现步骤。 一、原理解释 SSH免密登录的实现依赖于SSH密钥对,主要是利用…...
Java入门基础学习笔记47——ArrayList
什么是集合呢? 集合是一种容器,用来装数据的,类似数组。 有数组,为什么还要学习集合呢? 数组定义完成并启动后,长度就固定了。 而集合是大小可变,开发中用的最多的。 集合的特点:大…...
案例题(第二版)
案例题目 信息系统架构设计 基本概念 信息系统架构(ISA)是对某一特定内容里的信息进行统筹、规划、设计、安排等一系列的有机处理的活动。特点如下 架构是对系统的抽象,它通过描述元素、元素的外部可见属性及元素之间的关系来反映这种抽象…...
基于python向量机算法的数据分析与预测
3.1 数据来源信息 该数据集来源于Kaggle网站,数据集中包含了罗平菜籽油的销售数据,每行数据对应一条记录,记录了罗平菜籽油销售数据。其中,菜籽产量、菜籽价格和菜籽油价格是数值型数据,共2486条数据。 通过读取Exce…...
传输层 --- UDP
一、简述与回顾 传输层:负责数据能够从发送端传输接收端 在TCP/IP协议中,我们用"源IP","源端口号","目的IP","目的端口号",和"协议号"来表示一个通信。…...
图书管理系统(Java版本)
文章目录 前言要求1.设置对象1.1.图书1.2.书架2.管理员3.功能的实现 2.搭建框架2.1.登录(login)2.2.菜单2.3.操作方法的获取 3.操作方法的实现3.1.退出系统(ExitOperation)3.2.显示图书(ShowOperation)3.3.查阅图书(FindOperation)3.4.新增图书(AddOperation)3.5.借出图书(Borr…...
全同态加密生态项目盘点:FHE技术的崛起以及应用
撰文:Chris,Techub News 在当今数字化的时代,隐私保护已成为一个全球性的焦点话题,特别是在加密货币和区块链技术快速发展的背景下。虽然当前的隐私技术在保护数据安全方面多有欠缺,引发了广泛的关注和批评,…...
山脉数组的峰顶索引 ---- 二分查找
题目链接 题目: 分析: 我们很明显, 可以从峰值位置将数组分成两段, 具有"二段性", 所以可以用二分查找因为arr是山峰数组, 不存在相等的情况如果arr[mid] > arr[mid 1], 说明mid的位置可能是峰值, 移动right mid如果arr[mid] < arr[mid 1], 说明mid的位置…...
【简单介绍下7-Zip,什么是7-Zip?】
🎥博主:程序员不想YY啊 💫CSDN优质创作者,CSDN实力新星,CSDN博客专家 🤗点赞🎈收藏⭐再看💫养成习惯 ✨希望本文对您有所裨益,如有不足之处,欢迎在评论区提出…...
SCSS基本使用:构建高效、可维护的CSS架构
SCSS基本使用:构建高效、可维护的CSS架构 SCSS(Sassy CSS)是一个流行的CSS预处理器,它扩展了CSS的功能,提供了变量、嵌套规则、混合(Mixins)、函数等强大的编程特性,使得开发者能够编…...
allegro 无法删除Xnet
allegro 无法删除Xnet Orcad中打开Constraint Manager之后,再生成网表,导入PCB后就会出现一堆Xnet网络。无法去除Xnet。 解决办法 在原理图ORCAD中, 1、打开Edit Object properties 2、选择Filter by:Capture 3、点击New Property 4、设置…...
2024年甘肃特岗教师招聘报名流程,速速查收哦!
2024年甘肃特岗教师招聘报名流程,速速查收哦!...
【错误解决】使用HuggingFaceInstructEmbeddings时的一个错误
起因:使用huggingface构建一个问答程序时出现的问题。 错误内容: 分析: 查看代码发现,HuggingFaceInstructEmbeddings和sentence-transformers模块版本不兼容导致。 可以明显看到方法参数不同。 解决: 安装sentenc…...
C++中的四种类型转换运算符
隐式类型转换是安全的,显式类型转换是有风险的,C语言之所以增加强制类型转换的语法,就是为了强调风险,让程序员意识到自己在做什么。但是,这种强调风险的方式还是比较粗放,粒度比较大,它并没有表…...
k8s 1.28.10 浏览器访问6443查看api,需要证书
添加证书 使用client-certificate-data和client-key-data生成一个p12文件 1.生成client-certificate-data grep client-certificate-data ~/.kube/config | head -n 1 | awk {print $2} | base64 -d >> kubecfg.crt2.生成client-key-data grep client-key-data ~/.kub…...
新火种AI|复旦团队在“冷冻人脑”领域获得重大进展!人工智能是否会对此形成助力?
在低温医学领域,“冷冻人脑”技术的研究和突破既是重点,也是难点。因为这项技术关乎着人类是否可以取得一个令人瞩目的突破——人类的生命是否能够得到延续。 早几年,诸如“利用人体冷冻技术将身患绝症的病人保存十几年,几十年…...
echarts 散点图修改散点图中图形形状颜色大小
话不多说,直接上代码 let option {color:[xxx, xxx, xxx, xxx], //直接设置color可修改图形颜色title: {text: 散点图图形,},tooltip: {trigger: axis,axisPointer: {type: cross}},legend: {top: 2,right:2,itemWidth: 10,itemHeight: 10,textStyle:{fontSize:14}…...
SpringBoot3.x + JDK21 整合 Mybatis-Plus
前言 SpringBoot3.0 开始最低要求 Java 17,虽然目前最新的版本为 JDK22,但是在官网上看到 JDK23 在今年9月又要发布了,感觉这 JDK 也有点太过于给力了 所以我们选择用目前的 LTS 版本 JDK21 就好了,不用追求最新的 springboot 版…...
Java类和对象(五)—— 抽象类、接口、Object类和内部类
抽象类 在继承体系下,父类有些方法可能是要被重写的,如果我们事先就知道某些方法需要重写的话,我们可以不用在父类里面具体实现这个方法,这时候我们会用到抽象方法,这时候我们会用到关键字abstract关键字来修饰 publ…...
别再只用Service了!ROS1 Action通信保姆级教程:从导航进度条到任务取消,手把手教你实现带反馈的机器人任务
别再只用Service了!ROS1 Action通信保姆级教程:从导航进度条到任务取消,手把手教你实现带反馈的机器人任务当你的机器人正在执行一个长达10分钟的导航任务时,突然发现目标点设置错误,这时候如果只能干等着任务完成或者…...
MySQL GROUP BY 原理与优化
我刚工作的时候,有次统计每个用户的订单总金额,写了 SELECT user_id, SUM(amount) FROM orders GROUP BY user_id,结果执行了 60 秒还没出结果。DBA 帮我一看执行计划,发现没走索引,导致 Using temporary(用…...
中兴光猫终极管理指南:解锁工厂模式与Telnet权限的实战教程
中兴光猫终极管理指南:解锁工厂模式与Telnet权限的实战教程 【免费下载链接】zteOnu A tool that can open ZTE onu device factory mode 项目地址: https://gitcode.com/gh_mirrors/zt/zteOnu 掌握中兴光猫的设备管理和权限获取能力是网络管理员和技术爱好者…...
告别元素变动导致的报错:探索自动化测试脚本的 AI“自愈”能力
前言:一个所有测试人都经历过的噩梦 周三晚上十一点,CI/CD流水线再次亮起红灯。 你打开日志,满屏的NoSuchElementException扑面而来。仔细一看——前端团队在昨天的版本中重构了登录页面的DOM结构,原本的#login-btn变成了#signin-button-v2,30个测试用例因此全军覆没。 …...
Hindsight API参考:REST接口完整文档
Hindsight API参考:REST接口完整文档 【免费下载链接】hindsight Hindsight: Agent Memory That Learns 项目地址: https://gitcode.com/GitHub_Trending/hindsight2/hindsight Hindsight是一个强大的Agent Memory系统,提供了全面的REST API接口&…...
3分钟掌握JetBrains IDE试用期重置:终极完整指南
3分钟掌握JetBrains IDE试用期重置:终极完整指南 【免费下载链接】ide-eval-resetter 项目地址: https://gitcode.com/gh_mirrors/id/ide-eval-resetter JetBrains IDE试用期重置工具(ide-eval-resetter)是一个开源项目,专…...
DeepSeek重复代码识别失效了?5个被90%团队忽略的AST解析盲区及修复清单
更多请点击: https://codechina.net 第一章:DeepSeek代码重复检测失效的真相与影响 DeepSeek-R1 模型在代码理解任务中表现出色,但其内置的代码重复检测机制在特定场景下存在系统性失效。根本原因在于模型对语义等价但语法结构差异显著的代…...
昇腾NPU模型服务化——从离线模型到高可用推理服务
模型训练完只是第一步。真正产生业务价值的是把模型部署成724小时在线服务——毫秒级延迟、支持动态Batching、能扛住流量洪峰,且具备高可用性。 这篇将手把手教你基于昇腾NPU构建生产级模型推理服务,涵盖框架选型、服务化架构、动态Batching优化、热加载…...
地理空间机器学习库全解析:从TorchGeo到Raster Vision的实战指南
1. 项目概述:为什么我们需要专门的地理空间机器学习库?如果你尝试过用标准的PyTorch或TensorFlow去处理一张卫星影像,大概率会在第一步就卡住。不是模型写不出来,而是数据根本读不进去,或者读进去了却对不上位置。一张…...
如何在5分钟内免费搭建工业级OpenPLC虚拟控制器
如何在5分钟内免费搭建工业级OpenPLC虚拟控制器 【免费下载链接】OpenPLC Software for the OpenPLC - an open source industrial controller 项目地址: https://gitcode.com/gh_mirrors/op/OpenPLC OpenPLC是一款功能强大的开源虚拟PLC(可编程逻辑控制器&a…...
