
=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
| 步骤 | 开始时间 | 结束时间 |
|---|---|---|
[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 |
=TEXT(B2,"yyyy-mm-dd hh:mm:ss.000")|=TEXT(C2,"yyyy-mm-dd hh:mm:ss.000")字符串长度 —— =LEN(B3)|=LEN(C3)毫秒分隔符(·)位置序号 —— =FIND(".",B3)|=FIND(".",C3)日期时间 —— =LEFT(B3,B5-1)|=LEFT(C3,C5-1)毫秒 —— =RIGHT(B3,B4-B5)|=RIGHT(C3,C4-C5)日期时间差(天) —— =C6-B6毫秒差 —— =C7-B7日期时间差(天)转为日期时间差(毫秒) —— =B8*86400000日期时间差(毫秒)与毫秒差 —— =B10+B9日期时间差(毫秒)转为日期时间差(天) —— =B11/86400000日期时间差(天)格式化 —— =TEXT(B12,"[h]:m:S.000")
使用快捷键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;
}
=DiffDate(A2,B2)

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