• 【办公-excel】两个时间相减 (二) - 带毫秒的时间进行相减操作


    一、使用内部函数

    1.1 效果展示

    在这里插入图片描述

    =TEXT(((RIGHT(TEXT(B2,"yyyy-mm-dd hh:mm:ss.000"),LEN(TEXT(B2,"yyyy-mm-dd hh:mm:ss.000"))-FIND(".",TEXT(B2,"yyyy-mm-dd hh:mm:ss.000")))-RIGHT(TEXT(A2,"yyyy-mm-dd hh:mm:ss.000"),LEN(TEXT(A2,"yyyy-mm-dd hh:mm:ss.000"))-FIND(".",TEXT(A2,"yyyy-mm-dd hh:mm:ss.000"))))+(LEFT(TEXT(B2,"yyyy-mm-dd hh:mm:ss.000"),FIND(".",TEXT(B2,"yyyy-mm-dd hh:mm:ss.000"))-1)-LEFT(TEXT(A2,"yyyy-mm-dd hh:mm:ss.000"),FIND(".",TEXT(A2,"yyyy-mm-dd hh:mm:ss.000"))-1))*86400000)/86400000,"[h]:m:S.000")
    其中:

    • B2 结束时间
    • A2 开始时间
    • 单元格式:yyyy-mm-dd hh:mm:ss.000
      在这里插入图片描述

    1.2 步骤分解

    步骤开始时间结束时间
    [B2]2023-09-10 10:22:24.333[C2]2023-09-11 10:22:23.222
    1.将时间转为字符串[B3]2023-09-10 10:22:24.333[C3]2023-09-11 10:22:23.222
    2.获取字符串长度[B4]23[C4]23
    3.获取毫秒中·位置序号[B5]20[C5]20
    4.截取日期+时间[B6]2023-09-10 10:22:24[C6]2023-09-11 10:22:23
    5.截取毫秒[B7]333[C7]222
    6.获取日期时间差(天)[B8]0.999988426
    7.获取毫秒差[B9]-111
    8.日期时间差(天)转为日期时间差(毫秒)[B10]86399000
    9.合并日期时间差(毫秒)与毫秒差[B11]86398889
    10.日期时间差(毫秒)转为日期时间差(天)[B12]0.999987141
    11.日期时间差(天)格式化[B13]23:59:58.889
    • 1.将时间格式转为字符串 —— =TEXT(B2,"yyyy-mm-dd hh:mm:ss.000")|=TEXT(C2,"yyyy-mm-dd hh:mm:ss.000")
    • 2.获取字符串长度 —— =LEN(B3)|=LEN(C3)
    • 3.获取毫秒分隔符(·)位置序号 —— =FIND(".",B3)|=FIND(".",C3)
    • 4.截取日期时间 —— =LEFT(B3,B5-1)|=LEFT(C3,C5-1)
    • 5.截取毫秒 —— =RIGHT(B3,B4-B5)|=RIGHT(C3,C4-C5)
    • 6.计算日期时间差(天) —— =C6-B6
    • 7.计算毫秒差 —— =C7-B7
    • 8.日期时间差(天)转为日期时间差(毫秒) —— =B8*86400000
    • 9.累计日期时间差(毫秒)毫秒差 —— =B10+B9
    • 10.日期时间差(毫秒)转为日期时间差(天) —— =B11/86400000
    • 11.日期时间差(天)格式化 —— =TEXT(B12,"[h]:m:S.000")

    二、使用自定义函数

    2.1 WPS使用js进行函数编程

    2.1.1 将文件另存为 启用宏的工作簿(*.xlsm)

    在这里插入图片描述

    2.1.2 自定义函数DiffDate

    使用快捷键Alt+F11弹出WPS 宏编辑器并添加自定义函数
    在这里插入图片描述
    代码

    /**
     * DiffDate Macro
     * @param {Date} start
     * @param {Date} end
     */
    function DiffDate(start,end)
    {
    	
    	start1= start.Text;
    	end1= end.Text;
    
    	var milliSecondsStart = 0;
    	if(start1.includes("."))
    	{
    		var startLst1 =start1.split(".");
    		var startdate1 = startLst1[0];
    		var startms1 = startLst1[1];
    		var dateObj1 = new Date(startdate1);
    		var t1 = parseInt(startms1);
    		milliSecondsStart = dateObj1.getTime() + t1;
    		
    	}
    	else
    	{
    		var dateObj1 = new Date(start1);
    		milliSecondsStart = dateObj1.getTime();
    	}
    	
    	var milliSecondsEnd = 0;
    	if(end1.includes("."))
    	{
    		var endLst1 = end1.split(".");
    		var enddate1 = endLst1[0];
    		var endms1 = endLst1[1];
    		var dateObj2 = new Date(enddate1);
    		var t2 = parseInt(endms1);
    		milliSecondsEnd = dateObj2.getTime() + t2;
    		
    	}
    	else
    	{
    		var dateObj2 = new Date(end1);
    		milliSecondsEnd = dateObj2.getTime();
    	}
    
    	var milliSeconds = milliSecondsEnd - milliSecondsStart;
    	
    	var pre = "";
    	if(milliSeconds<0)
    	{
    		milliSeconds = -milliSeconds;
    		pre ="-"
    	}
    	
    	var hours = Math.floor(milliSeconds / 3600000);
    	var minutes = Math.floor((milliSeconds % 3600000) / 60000);
    	var seconds = Math.floor(((milliSeconds % 3600000) % 60000) / 1000);
    	var milliseconds = milliSeconds % 1000;
    	var timeStr =pre + hours.toString() + ":" + ("00" + minutes.toString()).slice(-2) + ":" + ("00" + seconds.toString()).slice(-2) + "." + ("000" + milliseconds.toString()).slice(-3);
    
    	return timeStr;
    }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    2.1.3 在工作簿中使用DiffDate函数

    =DiffDate(A2,B2)
    在这里插入图片描述

    2.2 Office 使用VBA进行函数编程

    因为没有安装Office,此处需要读者自行按照wps逻辑进行类似编程

    扩展阅读

    【办公-excel】两个时间相减

  • 相关阅读:
    10.18作业
    C语言实现 1.在一个二维数组中形成 n 阶矩阵,2.去掉靠边元素,生成新的 n-2 阶矩阵;3.求矩阵主对角线下元素之和:4.以方阵形式输出数组。
    WinUI(WASDK)项目实践——优雅的开发上位机应用(新)
    随想录一刷Day43——动态规划
    设计模式之适配器模式
    linux内核的一些宏
    网络安全等级保护细则
    微信发送接受消息测试用例
    这七个Github仓库,够学一辈子!
    使用canvas 和 webgl2制作界面系统(一)
  • 原文地址:https://blog.csdn.net/chenlu5201314/article/details/133670734