【办公-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.hqwc.cn/news/128624.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go 团队发布组织 / 构建 Go module 的官方指南

导读Go 团队发布了一份官方指南&#xff0c;帮助开发者更规范地组织 / 构建 Go module。 刚接触 Go 的开发者常见问题之一是&#xff0c;“就文件和文件夹的组织布局而言&#xff0c;如何组织我的 Go 项目&#xff1f;”。这份指南就是提供建议来帮助回答这个问题。其中包括针对…

ADuM1250 ADuM1251 模块 I2C IIC总线2500V电磁隔离 接口保护

功能说明&#xff1a; 1&#xff0c;2500V电磁隔离&#xff0c;2通道双向I2C&#xff1b; 2&#xff0c;支持电压在3到5.5V&#xff0c;最大时钟频率可达1000KHz&#xff1b; 3&#xff0c;将该隔离模块接入总线&#xff0c;可以保护主MCU引脚&#xff0c;降低I2C总线上的干…

工作流程引擎有几个特点?可以提高办公效率吗?

如果想要实现高效率的自动化办公&#xff0c;还依靠传统的办公软件是没有办法实现的。在自动化发展程度越来越高的今天&#xff0c;职场办公也拥有了优质的办公软件&#xff0c;助力实现高效率办公。低代码技术平台是专业的企业级应用低代码平台&#xff0c;其中的工作流程引擎…

vite+vue3+ts中使用require.context | 报错require is not defined | 获取文件夹中的文件名

vitevue3ts中使用require.context|报错require is not defined|获取文件夹中的文件名 目录 vitevue3ts中使用require.context|报错require is not defined|获取文件夹中的文件名一、问题背景二、报错原因三、解决方法 一、问题背景 如题在vitevue3ts中使用required.context时报…

3D孪生场景搭建:模拟仿真

前面几期文章介绍如何使用NSDT 编辑器 搭建3D应用场景&#xff0c;本期介绍下孪生场景中一个一个非常重要的功能&#xff1a;模拟仿真。 1、什么是模拟仿真 模拟仿真是一种用于描述、分析和模拟现实世界中系统、过程或事件的计算机模型和程序。仿真通过输入各种参数和条件&am…

docker安装wiki

1.docker pull mediawiki 2.docker run -d --name mywiki -p 8666:80 mediawiki 访问ip:8666,就可以看到配置页面了 3.docker pull mysql docker run -d --name my-mysql -e MYSQL_ROOT_PASSWORD123456 -p 3307:3306 mysql 4.在配置页面链接ip:3307,连接数据库&#xff0c;接下…

Axios、SASS学习笔记

目录 前言 一、Axios基础认识 1、简介 2、相关文档 3、基本配置 4、基础快捷使用 二、Axios封装 1、公共配置文件 2、细化每个接口的配置 3、使用并发送请求 三、SASS 1、简介 2、相关文档 3、使用前奏 4、使用变量 5、嵌套规则 6、父级选择器标识 & 前言…

Java常见设计模式

单例模式&#xff1a;程序自始至终只创建一个对象。 应用场景&#xff1a;1.整个程序运行中只允许一个类的实例时 2.需要频繁实例化然后销毁的对象 3.创建对象时耗时过多但又经常用到的对象 4.方便资源相互通信的环境 懒汉式线程不安全问题解决方案&#xff1a; 双重检查加锁机…

RabbitMQ学习笔记(下):延迟队列,发布确认高级,备份交换机

十、延迟队列 延迟队列 概念&#xff1a; 延迟队列使用场景&#xff1a; 流程图&#xff1a; 延迟队列整合Springboot 导入依赖&#xff1a; <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot…

c++视觉ROI 区域和ROI 区域图像叠加

ROI 区域提取和ROI 区域图像叠加 ROI 区域提取 #include <opencv2/opencv.hpp>int main() {// 读取图像cv::Mat image cv::imread("1.jpg");// 检查图像是否成功加载if (image.empty()) {std::cerr << "Error: Could not read the image." …

【致敬未来的攻城狮计划】第2期 作业汇总贴 + 获奖公布

一、写在前面 时间过得真快&#xff0c;距离 【致敬未来的攻城狮计划】第2期 的发起&#xff0c;已经过去一个多月了&#xff0c;而第2期的真正学习考核期也将在5/13的18点整正式结束。 关于第2期的活动计划&#xff0c;感兴趣的可以参见这里&#xff1a;【重磅推出】《致敬未…

2019年[海淀区赛 第2题] 阶乘

题目描述 n的阶乘定义为n!n*(n -1)* (n - 2)* ...* 1。n的双阶乘定义为n!!n*(n -2)* (n -4)* ...* 2或n!!n(n - 2)*(n - 4)* ...* 1取决于n的奇偶性&#xff0c;但是阶乘的增长速度太快了&#xff0c;所以我们现在只想知道n!和n!!末尾的的个数 输入格式 一个正整数n &#xff…