admin管理员组

文章数量:1122852

【办公

一、使用内部函数

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;
}

2.1.3 在工作簿中使用DiffDate函数

=DiffDate(A2,B2)

2.2 Office 使用VBA进行函数编程

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

扩展阅读

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

本文标签: 办公