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

news/2024/7/21 4:59:03 标签: 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;
}

2.1.3 在工作簿中使用DiffDate函数

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

2.2 Office 使用VBA进行函数编程

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

扩展阅读

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


http://www.niftyadmin.cn/n/5074656.html

相关文章

基于Docker-compose搭建LNMP

1、配置nginx 创建nginx目录上传所需压缩包将wordress解压到指定路径下 配置Dockerfile文本文件 vim DockerfileFROM centos:7 MAINTAINER this is nginx image <zgc> RUN yum -y install pcre-devel zlib-devel gcc gcc-c make RUN useradd -M -s /sbin/nologin nginx…

100天精通Python(可视化篇)——第103天:Pyecharts绘制多种炫酷水球图参数说明+代码实战

文章目录 专栏导读一、水球图介绍1. 水球图是什么?2. 水球图的应用场景二、水球图类配置选项1. 导包2. Liquid类3. add函数三、水球图实战1. 基础水球图2. 矩形水球图3. 圆棱角矩形水球图4. 三角形水球图5. 菱形水球图6. 箭头型水球图7. 修改数据精度8. 设置无边框9. 多个并排…

【算法优选】 二分查找专题——壹

文章目录 &#x1f60e;前言&#x1f38b;[二分查找](https://leetcode.cn/problems/binary-search/)&#x1f6a9;题目描述&#xff1a;&#x1f6a9;算法流程&#xff1a;&#x1f6a9;代码实现&#xff1a; &#x1f334;[在排序数组中查找元素的第一个和最后一个位置](http…

408专题--计算机网络4W字完整版-考研专用

文章目录 前言1.计算机网络体系结构1.1 计算机网络概述1.2 计算机网络的功能1.3 计算机网络的组成1.4 计算机网络分类按照分布范围分类按照交换技术分类按照使用者分类按照传输技术分类按传输介质分类按照拓扑结构分类 1.5 计算机网络的性能指标1.6 计算机网络体系结构1.7 计算…

湘潭大学 2023年下学期《C语言》作业0x03-循环1 XTU OJ 1094,1095,1096,1112,1113

第一题 #include<stdio.h>int main() {int t;int count1;scanf("%d",&t);while(t--){int a,b,c;scanf("%d%d",&a,&b);cab;printf("Case %d: %d\n",count,c);count;}return 0; } 记住多样例输入的模板&#xff0c;熟悉计数器…

【算法练习Day15】平衡二叉树二叉树的所有路径左叶子之和

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 平衡二叉树二叉树的所有路径…

Spring Boot:自定义注解--annotation

目录 自定义注解的定义和作用范围如何创建自定义注解创建注解接口 如何使用自定义注解进行数据验证创建注解处理器控制器中使用注解 如何为字段添加注解 自定义注解的定义和作用范围 自定义注解可以作用在类、方法、属性、参数、异常、字段或其他注解上。 如何创建自定义注解…

ThreeJS-3D教学六-物体位移旋转

之前文章其实也有涉及到这方面的内容&#xff0c;比如在ThreeJS-3D教学三&#xff1a;平移缩放物体沿轨迹运动这篇中&#xff0c;通过获取轨迹点物体动起来&#xff0c;其它几篇文章也有旋转的效果&#xff0c;本篇我们来详细看下&#xff0c;另外加了tween.js知识点&#xff0…