一、使用内部函数
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】两个时间相减