精华内容
下载资源
问答
  • 具体是这样,有两个时间段,根据这两个时间段的交集和非交集部分,拆分出至多三个时间段。当时就用了最基础最笨的方法,两个时间段的起止时间相互比较区分多种情况进行拆分。不知道各位有没有遇到过相似的问题,或者...
  •  //根据法定假日设置,计算时间段内周末的天数(包含法定假日)  $.each(Holiday, function (i, itemHoliday) {  var itemDay = new Date(itemHoliday.split('-')[0] + "/" + itemHoliday.split('-')[1] + "/" ...
  • java 计算有效时长,有一时间段计算时长计算时效性 计算 2020-08-07 10:10:23 到 2020-08-08 22:10:23 时间段内有多少小时,每天的01:00:00至06:00:00不计时长 计算时效性 同一天内有6种情况,分别是 00:00:00[s]...

    java 计算有效时长,有一时间段不计算时长

    计算 2020-08-07 10:10:23 到 2020-08-08 22:10:23 时间段内有多少小时,每天的01:00:00至06:00:00不计时长

    计算时效性

    同一天内有6种情况,分别是
    00:00:00[s][e]01:00:00;
    00:00:00[s]01:00:00 AND 01:00:00[e]06:00:00
    00:00:00[s]01:00:00 AND 06:00:00[e]23:59:59
    01:00:00[s][e]06:00:00
    01:00:00[s]06:00:00 AND 06:00:00[e]23:59:59
    06:00:00[s][e]23:59:59
    计算不同天,不同天分为两个同一天分别计算相加
    1.第一天开始时间~ “23:59:59”
    2."00:00:00"~最后一天的结束时间
    计算不同天的天数减去1得到相隔周期,乘以周期值

    import java.text.DecimalFormat;
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    /**
     * 累计时长计算 并且每天的01:00:00至06:00:00不计时长
     * 
     * @author weixiaoshuai 2020-08-07 16:00:00
     *
     */
    public class wxsJS {
    
    	private static String start = "01:00:00";
    	private static String end = "06:00:00";
    
    	public static void main(String[] args) {
    		String startTime1 = "2020-08-07 10:10:23";
    		String endTime1 = "2020-08-08 22:10:23";
    		System.out.println("有效时长:"+new wxsJS().youxiaoshichangjisuan(startTime1, endTime1));// 有效时长H
    	}
    
    	public String youxiaoshichangjisuan(String startTime1, String endTime1) {
    		String s = " ";
    		DecimalFormat df1 = new DecimalFormat("0.00");
    		try {
    			Date startTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(startTime1);
    			Date endTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(endTime1);
    			float shichang1 = (endTime.getTime() - startTime.getTime()) / 1000.0F / 60.0F;// 60.0F;
    			float shichang = 0;
    			String startTian = startTime1.split(" ")[0];
    			String endTian = endTime1.split(" ")[0];
    			Date t1 = new SimpleDateFormat("yyyy-MM-dd").parse(startTian);
    			Date t2 = new SimpleDateFormat("yyyy-MM-dd").parse(endTian);
    			int t = (int) ((t2.getTime() - t1.getTime()) / 1000.0F / 60.0F / 60.0F / 24.0F);
    			String startHms = startTime1.split(" ")[1];
    			String endHms = endTime1.split(" ")[1];
    			if (t == 0) {// 同一天的时间 endHmsD 永远大于 startHmsD
    							// 00:00:00~[s][e]~01:00:00 or
    							// 00:00:00~[s]~01:00:00 or
    							// 06:00:00~[e]~23:59:59 or
    							// 06:00:00~[s][e]~23:59:59
    				shichang = cs(startHms, endHms);
    			} else {// 不同一天的时间 endHmsD 永远大于 startHmsD
    				// 00:00:00~[e]~01:00:00 or
    				// 00:00:00~[s][e]~01:00:00 or
    				// 00:00:00~[s]~01:00:00 or
    				// 06:00:00~[e]~23:59:59 or
    				// 06:00:00~[s][e]~23:59:59 or
    				// 06:00:00~[s]~23:59:59
    				float shichangone = cs(startHms, "23:59:59");
    				float shichangtow = cs("00:00:00", endHms);
    				shichang = shichangone + shichangtow + ((t - 1) * 19);
    			}
    			s = df1.format(shichang);
    			System.err.println(t + "告警开始时间:" + startTime1 + " - " + endTime1 + " -- " + shichang1 + " --- " + shichang);
    		} catch (ParseException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    		return s;
    
    	}
    
    	private static float cs(String startHms, String endHms) throws ParseException {
    		float shichang = 0;
    		Date startHmsD = new SimpleDateFormat("HH:mm:ss").parse(startHms);
    		Date endHmsD = new SimpleDateFormat("HH:mm:ss").parse(endHms);
    		Date duan1 = new SimpleDateFormat("HH:mm:ss").parse("00:00:00");
    		Date duan2 = new SimpleDateFormat("HH:mm:ss").parse(start);
    		Date duan3 = new SimpleDateFormat("HH:mm:ss").parse(end);
    		Date duan4 = new SimpleDateFormat("HH:mm:ss").parse("23:59:59");
    		if (startHmsD.getTime() >= duan1.getTime() && startHmsD.getTime() <= duan2.getTime()
    				&& endHmsD.getTime() >= duan1.getTime() && endHmsD.getTime() <= duan2.getTime()) {
    			// 00:00:00~[s][e]~01:00:00
    			shichang = shichang + (endHmsD.getTime() - startHmsD.getTime()) / 1000.0F / 60.0F / 60.0F;
    		}
    		if (startHmsD.getTime() >= duan1.getTime() && startHmsD.getTime() <= duan2.getTime()
    				&& endHmsD.getTime() >= duan2.getTime() && endHmsD.getTime() <= duan3.getTime()) {
    			// 00:00:00~[s]~01:00:00
    			// AND
    			// 01:00:00~[e]~06:00:00
    			shichang = shichang + (duan2.getTime() - startHmsD.getTime()) / 1000.0F / 60.0F / 60.0F;
    		}
    		if (startHmsD.getTime() >= duan1.getTime() && startHmsD.getTime() <= duan2.getTime()
    				&& endHmsD.getTime() >= duan3.getTime() && endHmsD.getTime() <= duan4.getTime()) {
    			// 00:00:00~[s]~01:00:00
    			// AND
    			// 06:00:00~[e]~23:59:59
    			shichang = shichang + (duan2.getTime() - startHmsD.getTime()) / 1000.0F / 60.0F / 60.0F
    					+ (endHmsD.getTime() - duan3.getTime()) / 1000.0F / 60.0F / 60.0F;
    		}
    		if (startHmsD.getTime() >= duan2.getTime() && startHmsD.getTime() <= duan3.getTime()
    				&& endHmsD.getTime() >= duan2.getTime() && endHmsD.getTime() <= duan3.getTime()) {
    			// 01:00:00~[s][e]~06:00:00
    			shichang = 0;
    		}
    		if (startHmsD.getTime() >= duan2.getTime() && startHmsD.getTime() <= duan3.getTime()
    				&& endHmsD.getTime() >= duan3.getTime() && endHmsD.getTime() <= duan4.getTime()) {
    			// 01:00:00~[s]~06:00:00
    			// AND
    			// 06:00:00~[e]~23:59:59
    			shichang = shichang + (endHmsD.getTime() - duan3.getTime()) / 1000.0F / 60.0F / 60.0F;
    		}
    		if (startHmsD.getTime() >= duan3.getTime() && startHmsD.getTime() <= duan4.getTime()
    				&& endHmsD.getTime() >= duan3.getTime() && endHmsD.getTime() <= duan4.getTime()) {
    			// 06:00:00~[s][e]~23:59:59
    			shichang = shichang + (endHmsD.getTime() - startHmsD.getTime()) / 1000.0F / 60.0F / 60.0F;
    		}
    
    		return shichang;
    	}
    }
    
    展开全文
  • 计算2个时间段的重叠天数

    千次阅读 2017-12-30 14:19:39
    最近做一个需求,是计算查询日期范围内产生的费用,需要将查询日期范围跟实际产生费用日期...一个时间段跟另一个时间段,有如下三种情况: 1. 没有重叠 2. 部分重叠 3. 包含式重叠。即一个时间段被另一个时间段包含。

    最近做一个需求,是计算查询日期范围内产生的费用,需要将查询日期范围实际产生费用日期范围计算重叠天数,然后重叠天数*每天费用=查询日期范围内的费用

    一个时间段跟另一个时间段,有如下三种情况:
    1. 没有重叠
    2. 部分重叠
    3. 包含式重叠。即一个时间段被另一个时间段包含。

    经过分析,将2个时间段按时间线排列,只需要算出最早end_date最晚start_date的交集就行了。
    overlap = (min(end1, end2) - max(start1, start2)).days + 1

    下面是完整代码

    def calc_overlap_days(s1, e1, s2, e2):
        latest_start = max(s1, s2)
        earliest_end = min(e1, e2)
        overlap = (earliest_end - latest_start).days + 1
        if overlap < 0:
            overlap = 0
        return overlap
    展开全文
  • ORACLE计算两个时间段的相差分钟,小时,秒数

    求分钟:

    SELECT CEIL((TO_DATE('2016-07-19 10:10:10' , 'YYYY-MM-DD HH24-MI-SS') - TO_DATE('2016-07-19 10:07:50' , 'YYYY-MM-DD HH24-MI-SS')) * 24*60  )  as HOURS FROM DUAL;

    执行结果如下

    HOURS 
    3

     

    求小时:

    SELECT CEIL((TO_DATE('2016-07-19 15:10:10' , 'YYYY-MM-DD HH24-MI-SS') - TO_DATE('2016-07-19 10:07:50' , 'YYYY-MM-DD HH24-MI-SS')) * 24  )  AS minutesFROM DUAL;

    执行结果如下

    minutes
    6

     

    求秒:

    SELECT CEIL((TO_DATE('2016-07-19 10:10:10' , 'YYYY-MM-DD HH24-MI-SS') - TO_DATE('2016-07-19 10:07:50' , 'YYYY-MM-DD HH24-MI-SS')) * 24*60*60  )   as SECOND FROM DUAL;

    执行结果如下:

    SECOND
    140

     

     

     

    20160719@CHUNGKING YUBEI

    展开全文
  • 在实际的项目中,我们常常有这样的需求,计算某个时间点加上某个时间段后(几天几小时几分钟)的时间。如: 2016-04-05 09:29:15 要加上2天4小时5分钟后的时间: 即:2016-04-07 13:34:15。function getEndTime...

    在实际的项目中,我们常常有这样的需求,计算某个时间点加上某个时间段后(几天几小时几分钟)的时间。如:
    2016-04-05 09:29:15 要加上2天4小时5分钟后的时间:
    即:2016-04-07 13:34:15。

    function getEndTime(starttime){
        var nd = new Date(Date.parse(startTime.replace(/-/g, "/"))); //改为标准格式:2016/04/05 09:29:15 
        nd = nd.valueOf(); //转换为毫秒数
        nd = nd + day * 24 * 60 * 60 * 1000 + hour * 60 * 60 * 1000 + min * 60 * 1000;
        nd = new Date(nd);
        var y = nd.getFullYear();
        var m = nd.getMonth()+1;
        var d = nd.getDate();
        var hh = nd.getHours();
        var mm = nd.getMinutes();
        var ss = nd.getSeconds();
        if(m <= 9) m = "0"+m;
        if(d <= 9) d = "0"+d; 
        if(hh<= 9) hh = "0"+hh;
        if(mm<= 9) mm = "0"+mm;
        if(ss<= 9) ss = "0"+ss;
        var date = y+"-"+m+"-"+d+" "+hh+":"+mm+":"+ss;
        return date; //结束时间 2016-04-07 13:34:15
    
    }
    展开全文
  • Java 计算一段时间段内的工作日(除去周六周日)1、前端界面简介2、后台处理代码3、注释:《END》 实现功能提要: 本文章记录的是某段时间的起止时间段内的工作日(除去周六日,节假日的暂时先不记录); 1、前端...
  • 在工作过程中,有时候要计算两个时间段之间的总月数及折算的年限,可以用下列的公式进行计算。 一、计算两个时间段之间的总月数 公式:=(LEFT(C2,4)-LEFT(B2,4)+1)*12-(RIGHT(B2,2)-1)-(12-RIGHT(C2,2)) 二...
  • java计算两个时间段内的交集天数

    千次阅读 2012-05-22 15:40:34
    在写一个计算请假天数的方法,数据库中有法定假期的时间,计算请假时间段与法定假期时间段之间有交集的天数,以此推算出真正请假的天数。 下面是我写的方法,一共有六中可能性。  /**  * 计算请假天数  * @...
  • java计算两个时间段的重合天数

    千次阅读 2011-11-14 17:23:52
    由于我要计算一个合同在当月的分摊的金额,所以就要知道这个合同的有效期在本月有多少天,这就要进行两个时间段重合天数的计算。 两个时间段四个时间点,相当于时间轴上的两条线段(b代表起点,e代表端点,b 可分3...
  • 目前开发中遇到一个问题,就是算法:一个时间段a和多个不重叠时间段对比,得出a时间段中与其他时间段的不重叠时间段,思路不是很清晰,就高手提点下
  • 该段代码思路为计算好多少个整周,... * 计算段时间内包含多少天周中 多少天周末 * @param start * @param end * @returns {{weekDays: number, weekendDays: number}} */ export function getWeekDayCount(st...
  • 时间戳转换工具,时间段间隔计算

    千次阅读 2018-06-08 10:51:15
    * 计算两个时间戳间隔多少天 * startTime是前 endTime在后 */ public static int equation(String startTime, String endTime) { String ss = startTime + ""; String ee = endTime + ""; ...
  • Java8日期和时间段计算

    千次阅读 2020-02-25 16:50:30
    在Java8之前,计算日期相差多少天一般的做法都是借助SimpleDateFormat对两个日期格式化之后在进行比较。在编写代码的过程中,计算一个方法具体耗时多少分钟,执行了多少秒等需求,一般也是借助System....
  • 计算k流水线执行n条指令的执行时间,有必要区分两种情况: 如果流水线中的各执行时间均为t,那么执行n条指令的时间就是执行第一条指令的时间kt,加上其余n-1条指令各执行一时间(n-1)t。 如果流水线中的...
  • 现在给定一段时间,要求按照自然周得出这段时间内有多少周,除过节假日和周末
  • C语言 计算程序的执行时间(毫秒)

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,223,664
精华内容 489,465
关键字:

如何计算时间段