5行代码无循环的解决方案

定义之间的天数的方式与ChronoUnit.DAYS.between(start, end)表示4星期一至星期五之间存在天数的方式相同。由于我们只对工作日感兴趣,因此我们必须减去周末,因此从星期五到星期二会有2工作日(只需计算endDay - startDay并减去2周末)。1如果要包含结果,则添加到结果中,即不要间隔几天。

我提出两种解决方案。

第一个解决方案(5线,简短和隐秘):

import java.time.*;

import java.time.temporal.*;

public static long calcWeekDays1(final LocalDate start, final LocalDate end) {

final DayOfWeek startW = start.getDayOfWeek();

final DayOfWeek endW = end.getDayOfWeek();

final long days = ChronoUnit.DAYS.between(start, end);

final long daysWithoutWeekends = days - 2 * ((days + startW.getValue())/7);

//adjust for starting and ending on a Sunday:

return daysWithoutWeekends + (startW == DayOfWeek.SUNDAY ? 1 : 0) + (endW == DayOfWeek.SUNDAY ? 1 : 0);

}

第二种解决方案:

public static long calcWeekDays2(final LocalDate start, final LocalDate end) {

final int startW = start.getDayOfWeek().getValue();

final int endW = end.getDayOfWeek().getValue();

final long days = ChronoUnit.DAYS.between(start, end);

long result = days - 2*(days/7); //remove weekends

if (days % 7 != 0) { //deal with the rest days

if (startW == 7) {

result -= 1;

} else if (endW == 7) {  //they can't both be Sunday, otherwise rest would be zero

result -= 1;

} else if (endW < startW) { //another weekend is included

result -= 2;

}

}

return result;

}

java 时间间隔 工作日_计算Java中两个日期之间的工作日数相关推荐

  1. Mysql判断工作日函数_MySQL函数查找两个日期之间的工作日数

    慕田峪9158850 该解决方案使用与Rodger基本相同的方法,除了生成矩阵的方法要复杂得多.注意:此解决方案的此输出与NETWORKDAYS不兼容.与Rodger的解决方案一样,这可以计算开始日期 ...

  2. java 时间间隔 工作日,计算Java中两个日期之间的工作日数

    Can anyone point me to some Java snippet wherein i can get business (except Sat and Sun) days betwee ...

  3. java计算时间区间工作日_Java如何计算两个日期之间的工作日数?

    以下代码可帮助您查找两个日期之间指定的工作日(星期一,星期二,星期三等)的数量.我们下面使用的解决方案是在两个日期之间循环,并检查这些日期的工作日是否等于我们要计算的日期.package org.nh ...

  4. mysql 计算工作日_MySQL函数查找两个日期之间的工作日数

    该解决方案使用与Rodger基本相同的方法,除了生成矩阵的方法要复杂得多.注意:此解决方案的此输出与NETWORKDAYS不兼容. 与Rodger的解决方案一样,这可以计算开始日期(@S)和结束日期( ...

  5. 【SQL开发实战技巧】系列(十七):数据仓库中时间类型操作(初级)确定两个日期之间的工作天数、计算—年中周内各日期出现次数、确定当前记录和下一条记录之间相差的天数

    系列文章目录 [SQL开发实战技巧]系列(一):关于SQL不得不说的那些事 [SQL开发实战技巧]系列(二):简单单表查询 [SQL开发实战技巧]系列(三):SQL排序的那些事 [SQL开发实战技巧] ...

  6. Joda-Time中两个日期之间的天数

    本文翻译自:Number of days between two dates in Joda-Time How do I find the difference in Days between two ...

  7. 获取Moment Js中两个日期之间的小时差异

    本文翻译自:Get hours difference between two dates in Moment Js I'm able to get the difference between two ...

  8. SQL计算两个日期之间的工作天数

    if exists (select * from dbo.sysobjects where id = object_id(N'[tb_Holiday]') and OBJECTPROPERTY(id, ...

  9. 如何计算两个日期之间的工作天数

    大家好,才是真的好. 很多人觉得,Notes应用中的日期处理是一大需求点,也是一大难点,为此很多人使用Java代码来进行处理.但要是学会并灵活运用Domino中的公式,很多问题会变得很简单.今天我们就 ...

最新文章

  1. .fa .fna和.fasta是同一种格式文件吗?
  2. ImportError: /lib64/libc.so.6: version `GLIBC_2.17‘ 问题解决
  3. matlab图像融合评价,MATLAB 图像融合评估算法
  4. 【转】激活 ActiveX 控件
  5. excel转html放在tomcat,Excel转web!把excel在线打开??
  6. mybatis float 小数0 不显示_卧槽!用 float 存储金额,老板说损失从工资里扣!
  7. 程序员面试金典——9.6合法序号序列判断
  8. 如何修改sql server 表中自增长ID列,因删除而不连续。可以使用临时表
  9. c语言新手的无奈,几个新手容易犯的错误
  10. Transfer Learning from Speaker Verification to Multispeaker Text-To-Speech Synthesis
  11. python多因素方差分析_统计科学之多因素方差分析
  12. 如何设置局域网共享打印机及问题解决
  13. 89c51流水灯汇编语言程序,单片机控制流水灯程序 汇编语言
  14. Tomcat崩溃排查
  15. 计算机常用的颜色英文缩写,计算机用语中常见英文缩写和词组J
  16. 文件被清理了怎么恢复
  17. QSlider美化规则
  18. YARN | 让你彻底搞明白YARN资源分配
  19. 智慧养老如何养老及智慧养老的发展情况
  20. 最简单的线性回归模型 李烨_模型

热门文章

  1. 2022年全球市场自行车零配件总体规模、主要企业、主要地区、产品和应用细分研究报告
  2. 筹码底部共振(同花顺指标 副图 源码 测试图)
  3. 米家Zigbee系列传感器软件设计总结
  4. web页面之响应式布局
  5. Android 免root 备份数据,教你安卓手机免Root恢复手机数据的三种方法
  6. 华为手机助手上架流程_2019年各大安卓应用商店上架经验,含流程,物料,方法(建议收藏)...
  7. windows的命令行工具和DOS工具的区别
  8. jy-12-SPRINGMYBATIS02——云笔记02-刘苍松
  9. 玩转JDBC打造数据库操作万能工具类JDBCUtil,加入了高效的数据库连接池,利用了参数绑定有效防止SQL注入
  10. 工作流模式的学习与总结