今天做延时显示的时候,用到了时间的运算,发现没什么概念,只好学习下。

1 总结下时间做加减乘除的运算规则和意义

  • 看起来时间只适合加减,不适合乘除
  • 时间的加法:直接加,会自动进位为 秒,分,小时
  • 时间的减法,结果是double类型,要转为时间显示,必须用cdate()转
  • 时间的乘法:只有个乘法的意义,得出的数就是double相乘,几乎看不到什么意义
  • 时间的除法:只有个除法的意义,得出的数就是double相除,至少还有个等分的意义。。。。
Sub xxx1()'时间-时间=结果,必须先用 cdate转下,追问那时间*时间呢,时间/时间也一样'时间+时间=结果,不需要 cdate转下'超过范围呢'now()  date()  time() 是属于date数据类型,本质属于double类型,整数部分是date,小数部分是timeDebug.Print "时间加法"Debug.Print TimeValue("00:00:30") + TimeValue("00:00:05")Debug.Print TimeValue("00:00:30") + TimeValue("00:00:55")Debug.Print 0 + TimeValue("00:01:05")                                '0可以直接参与时间运算,等价timevalue("00:00:00")
'  Debug.Print TimeValue("00:00:30") + TimeValue("00:00:155")          '必须按时间的格式写,155秒这种写法错误Debug.Print CDate(TimeValue("00:00:30") + TimeValue("00:00:05"))Debug.Print CDate(TimeValue("00:00:30") + TimeValue("00:00:55"))Debug.Print "时间减法"                                              '时间相减后,要显示为时间必须用cdate转Debug.Print TimeValue("00:00:30") - TimeValue("00:00:05")           '只是1个正数Debug.Print TimeValue("00:00:30") - TimeValue("00:00:55")           '只是1个负数Debug.Print CDate(TimeValue("00:00:30") - TimeValue("00:00:05"))    '用cdate()转回时间还是对的,但正负号会被忽略Debug.Print CDate(TimeValue("00:00:30") - TimeValue("00:00:55"))    '时间没有负数,所以这个数字转为时间后和整数转的一样了Debug.Print "时间乘法"                                              '时间乘法感觉也只有数字意义了,不再是时间了Debug.Print TimeValue("00:00:01") * TimeValue("00:00:05")Debug.Print TimeValue("00:00:30") * TimeValue("00:00:05")Debug.Print TimeValue("00:00:00") * TimeValue("00:00:05")Debug.Print CDate(TimeValue("00:00:07") * TimeValue("00:00:05"))Debug.Print CDate(TimeValue("00:00:30") * TimeValue("00:00:05"))Debug.Print CDate(TimeValue("00:00:00") * TimeValue("00:00:05"))Debug.Print "时间除法"Debug.Print TimeValue("00:00:30") / TimeValue("00:00:05")             '时间的除法感觉纯变成,数字意义了,不再具有时间意义了Debug.Print TimeValue("00:00:30") / TimeValue("00:00:07")Debug.Print CDate(TimeValue("00:00:30") / TimeValue("00:00:05"))Debug.Print CDate(TimeValue("00:00:30") / TimeValue("00:00:07"))'cdate() 还可以用来转format输出的 string格式的时间Debug.PrintDebug.Print TimeValue("00:00:03")Debug.Print Time()Debug.Print Time() + TimeValue("00:00:05")Debug.Print Time() + 0Debug.Print 0 + TimeValue("00:00:05")Debug.PrintEnd Sub

2 cdate()

  • 可以把format返回的string转化为时间
  • 时间之间相减,也需要cdate转化下
  • cdate()转正常时间好像就等于本身
  • 注意:
  • cdate() 会优先把非 : 分隔的时间,认为是日期
  • cdate() 认为 :分隔的是时间
  • cdate() 认为  /  -  或空格 分隔的都是日期
  • cdate() 可以识别英文日期写法
Sub xxx2()Debug.Print TimeValue("00:00:05")
Debug.Print CDate(TimeValue("00:00:05"))
Debug.PrintDebug.Print Now()
Debug.Print Date
Debug.Print Time()
Debug.Print CDate(Now())
Debug.Print CDate(Date)
Debug.Print CDate(Time())
Debug.PrintDebug.Print CDate("31 dec 2019")
Debug.Print CDate("jan 02 2019")
Debug.Print CDate("2018-01-01")
Debug.Print CDate("2018/01/01")
Debug.Print CDate("2018 01 01")
'Debug.Print CDate("2018:01:01")  '这个会报错,也就是日期写法只能是/ 或 -
Debug.Print CDate("12:10:05")
Debug.PrintDebug.Print "从下面几个试验来看,除了: cdate()会优先把各种时间,日期识别为日期!把第1位或第3位解释为日期。。。"
Debug.Print CDate("12-10-05")
Debug.Print CDate("12 10 05")
Debug.Print CDate("15 10 5")
'Debug.Print CDate("13-30-35")  '这个居然报错。。。
Debug.Print CDate("18 10 55")
Debug.PrintEnd Sub

3 timevalue("00:00:10")

Sub xxx3()
Debug.Print TimeValue("00:00:10")
Debug.Print TimeSerial(0, 0, 10)
End Sub

4 timeserial(0,0,10)

VBA, 时间的加减乘除运算: 时间的减法需要用 cdate() 转下,时间的乘除好像意义不大相关推荐

  1. java用流体加减乘除_任意输入两个数,完成加法、减法、乘法、除法运算!(加减乘除运算分别定义四个方法)_学小易找答案...

    [简答题]编写程序实现菜单设计 [简答题]一层平面图 [简答题]编写一个程序实现大小写字母转换 [简答题]利用循环语句输出一个五行的等腰三角形,如下图 [简答题]编写一个程序实现交换两个变量的数值. ...

  2. matlab中连续信号的卷积,连续时间信号卷积运算的MATLAB实现

    . . . .. .. 连续时间信号卷积运算的MATLAB 实现 一.实验目的 (1) 理解掌握卷积的概念及物理意义. (2) 理解单位冲击响应的概念及物理意义. 二.实验原理 根据前述知识,连续信号 ...

  3. Excel如何给当前时间做秒单位上的减法操作?

    今天要给大家分享的是,Excel如何给当前时间做秒单位上的减法操作,比如下图中的时间,它是日期+时间的内容,但只做了时间显示的格式设置,我们来看一下它不好操作的原因吧-- (方方格子插件) 1.先看动 ...

  4. 复数加减java_用java实现复数的加减乘除运算

    用java实现复数的加减乘除运算 1. 背景 老师在课上布置了几道java编程题,此为其中之一 2. 题目内容 设计一个类Complex,用于封装对复数的下列操作: (1)一个带参数的构造函数,用于初 ...

  5. java中两个复数相乘_用java实现复数的加减乘除运算

    用java实现复数的加减乘除运算 1. 背景 老师在课上布置了几道java编程题,此为其中之一 2. 题目内容 设计一个类Complex,用于封装对复数的下列操作: (1)一个带参数的构造函数,用于初 ...

  6. oracle 时间减去一个月_一文看懂教孩子时间问题的进阶过程

    01 认识时间 说起时间,孩子们通常首先会想到钟表.而这里,象爸建议,我们要先让孩子们了解用什么来表达时间,只有清楚了时间的基本概念和度量方式,孩子们才能从小建立时间观念,培养积极健康的人格.因此,家 ...

  7. 用汇编实现256以内的三个数的加减乘除运算

    时间有限,就做了这个,有不足之处,还望指点,谢谢!                 QQ:1041176269  黑白君 以下程序,是实现三个任意小于256的数的加减乘除运算,并且结果不超过256(本 ...

  8. c语言goord函数,php的chr和ord函数实现字符加减乘除运算实现代码

    php的chr和ord函数实现字符加减乘除运算实现代码 chr函数用于将ASCII码转换为字符 ord函数是用来字符转换为ASCII码 ASCII码是计算机所能显示字符的编码,它的取值范围是0-255 ...

  9. c语言中的加减乘除字母,简单的c语言加减乘除运算

    简单的c语言加减乘除运算 答案:6  信息版本:手机版 解决时间 2019-10-03 12:11 已解决 2019-10-03 00:06 简单的c语言加减乘除运算 最佳答案 2019-10-03 ...

最新文章

  1. 深度学习目标检测模型全面综述:Faster R-CNN、R-FCN和SSD
  2. mybatis中传入String类型参数异常
  3. bootstrap4导航栏点击弹出表单_Bootstrap4从入门到精通
  4. python视频教程大全
  5. Chromium:安装depot_tools及获取Chromium源代码
  6. tornado post第3方_[33]python-Web-框架-Tornado
  7. LaTex插入PDF图片并调整它的宽度
  8. LeetCode —— 148. 排序链表(Python)
  9. Python实现动态图的解析、合成与倒放
  10. swift开发网络篇 - 用户登录POST JSON and header
  11. 就等android了
  12. 前期易语言编程作品收录|赤壁盗号|
  13. MSAgent技术应用
  14. protues 快捷键和元件
  15. 貌似不错的PPC手机软件开发工具basic4ppc
  16. 青鸟BCNT-网络信息安全工程师
  17. 合宙Luat | 嘿~合宙刚办了一场「大型网友见面会」
  18. win7(32位)旗舰版共享HP1010打印机给WINXP专业版
  19. 机器学习-训练了一个高效快速识别身份证正面关键信息的模型
  20. 群接龙小程序定制开发

热门文章

  1. 学术期刊数据库---爱思唯尔
  2. UI设计教程分享:Ps合成炫酷机械姬
  3. 拍摄视频号内容用什么工具最合适呢?
  4. 写了个“开始充电就 Xxx 的功能”,结果测试把充电口拔坏了~
  5. 计算机网络相关技术,计算机网络相关技术知识.ppt
  6. 2020lol服务器维护到几点,lol今天维护时间是多久 lol维护公告2020最新
  7. Android接入腾讯X5浏览器内核
  8. 《复仇者联盟》AI换脸平台
  9. Android LinearLayout 各布局属性总结
  10. 服务交付经理与项目经理区别_服务和经理类名称的真实含义