4使用日期时间数据的计算

除了直接从日期时间数据中获取信息,在SPL中还可以使用日期时间类数据来执行各类计算。

最常用的有关日期的计算就是计算年龄:

A1和B1中的数据如下:

在第2行用age() 函数,根据A1中的生日来计算年龄,计算年龄时,是以当前的日期为准的,默认情况将精确到日,添加@m可以将精度设为月,添加@y可以将精度设定为年。在不同精度的情况下,计算所得的年龄可能会有区别,A2,B2和C2中得到的年龄分别如下:

使用age() 函数,类似于计算生日日期和当前日期间隔的年数。更普遍的计算时间间隔的函数是interval() 函数,用这个函数可以计算两个日期时间数据之间相差多少天,添加@y,@q,@m,@s,@ms等选项,可以计算间隔多少年,季度,月,秒或毫秒。例如:

如果只需要计算两个日期之间相差多少天,也可以直接用减法完成,A2,B2和C2中的结果如下:

特别的,每个日期时间数据都可以转换为一个对应的长整数,这个长整数其实就是指定的日期时间和1970年1月1日,格林威治时间0:00:00的间隔毫秒数,如:

而在B2中,用long() 函数直接将日期时间类数据转换为长整数,可以看到A2和B2中的结果是相同的:

SPL中的elapse(t,k) 函数,可以根据已有的日期时间t,计算k天后的结果。添加选项@y,可以计算k年后的日期时间。类似的,还可以添加@q,@m,@s,@ms等选项,将间隔单位设定为季度,月,秒或毫秒。如:

A2,B2和C2中分别计算10天后,20年后和1个月前的日期,结果如下:

如果只是需要计算相差若干天的日期,也可以直接简写为加减法,如=A1+10,=A1-10等。

由于每个月的天数不同,在计算k个月后的日期时,默认情况下还会考虑当前日期是否是该月的最后一天,并进行对应的调整,如果不需要这样的调整,则需要添加@e选项,如:

B1和C1中的结果如下:

可以看到,由于2020年2月29日是2月的最后一天,B1中计算3个月后的日期时,同样得到了5月的最后一天,而C1中添加了@e选项,只计算3个月后的日期,而不做调整。

由于日期时间数据比较特殊,很多情况下并不方便直接判断是否相等。为此,可以在SPL中使用deq() 函数,只要两个数据在同一天,即认为相等。也可以添加选项@y,@q,@m@t@w等,将精度设为精确到年,季度,月,旬或周。如:

A2,B2和C2中的判断结果如下:

在使用日期时间数据时,还有一类计算是有关工作日的计算,用workday(t,k,h) 函数可以计算指定日期时间tk个工作日的日期时间,用workdays(b,e,h) 可以计算开始日期b和结束日期e之间的工作日序列。有关工作日的计算比较复杂,正常的工作日是每周的周一到周五,但是有时会受公假的影响,周一到周五的某天是休息日,或者周末的某一天需要正常上班,这样的日期调整可以设置到序列h中,序列中的非周末日期是增加的假期,序列中的周末日期则是需要加班的工作日。如:

A2中设定了2019年五一劳动节的公共假期调休情况:5月1日至5月3日的原工作日放假,而4月28日及5月5日的原周末调整为工作日。A3中计算结果如下:

注意2019年5月1日至3日为劳动节假期,5月4日为周末,而5月5日的原周末调整为工作日,因此2019年4月30日后的第2个工作日是2019年5月6日。

B3和C3中的结果如下:

可以看到,在未指定调整日期序列的情况下,只会显示周一到周五的日期;而A3中返回的结果才是正确的工作日。

用workdays() 可以得到工作日序列,更通用的计算日期时间序列的函数是periods(s,e,i),用来计算开始日期时间b和结束日期时间e之间的日期时间序列,间隔为i天。通过添加函数选项@y,@q,@m,@t,@s,可以调整时间间隔的单位为年,季度,月,旬或秒。如果不希望设定的结束值在结果中出现,则可以添加@x选项。在时间序列中,出现的每个数据都会调整为指定时间段的第1天,如每月第1天,每年第1天等,如果不需要这种调整,可以添加@o选项。如:

A2,B2中结果如下:

其中,A2中间隔单位为日,B2中间隔单位为月。

A3中设定去除结束日期,B3中设置不调整日期到月初,C3中同时设定@o和@x选项,结果如下:

有时需要将一段时间等分,此时可以使用range() 函数,如:

A2中,将2019年1月1日至2020年1月1日平均分为4段,取出第1段的起止日期;B2中取出第3段的起止日期。C2中将获取平均分为4段时,包括起止时间的每个间隔日期。A2,B2和C2中结果如下:

使用range函数时,如果前两个参数为日期时间,则分段时将精确到日;如果前两个参数为日期时间,则将精确到秒。

两个时间计算毫秒在线_SPL 的日期时间函数(下)相关推荐

  1. 两个时间计算毫秒在线_蹲坑英语时间之in a jiffy

    话说前几天做了一个小视频,上传的时候网站跳出来一个温馨提示-- Your video will be ready in a jiffy. 不是in a second或者in a minute吗?jif ...

  2. python由当前时间计算上周一、周日的日期时间

    1.法一 导入datetime包即可: 第二行使用了datetime进行相加,所以传参也得使用datetime进行封装,这样类型才会想等,如: datetime.datetime.strptime(& ...

  3. python日期格式统一化: 各种日期时间格式处理为标准统一日期时间格式

    python日期格式统一化: 各种日期时间格式处理为标准统一日期时间格式 import traceback import pandas as pd aa = ['2021年12月11日 19:19', ...

  4. ISO8601和UTC 时间,由秒数转化日期时间,日期到秒数

    ISO8601和UTC 时间,由秒数转化日期时间,日期到秒数 ISO8601时间格式:2018-6-5T17:46:50Z UTC时间格式:  2018-06-05T03:46:50+08:00 等同 ...

  5. python时间计算_python datetime库使用和时间加减计算

    datetime库使用 一.操作当前时间 1.获取当前时间 >>> importdatetime>>> printdatetime.datetime.now()20 ...

  6. java中时间输出的格式_Java 打印日期/时间格式

    Java格式 - Java 打印日期/时间格式 Java 打印日期/时间格式处理日期,时间和日期时间值. Java 打印日期/时间格式可以应用于格式值为long,Long,java.util.Cale ...

  7. linux常用时间命令全集,Linux 指令篇:日期时间排程--date

    Linux 指令篇:日期时间排程--date 名称 : date 使用权限 : 所有使用者 使用方式 : date [-u] [-d datestr] [-s datestr] [--utc] [-- ...

  8. php换算古代时间对照表查询,phpGrace 工具类库 - 日期时间换算类

    功能描述 日期时间换算,时间戳.时间差.过去时间计算. 部署说明下载 timer.php 部署到 phpGrace/tools 文件夹下. 使用说明 当前年份 currentYear()$timer  ...

  9. php 时间随机数,PHP——生成随机数和日期时间

    在PHP里面两个常用的函数 rand();    生成随机数   当括号内无参数时 系统会以当前时间为种子进行随机数的生成 rand(1,10);  括号里面是生成随机数的范围,在形成的随机数在1~1 ...

最新文章

  1. 压力传感器 ZNHM-I-5KG初步测试
  2. Swift - UIView的无损截图
  3. SAP中国际贸易条款的含义
  4. android主题编辑器,使用 Theme Editor 设计应用主题背景
  5. dinic (最大流) 算法 讲解
  6. 深入浅出设计模式原则之开闭原则(OCP)
  7. 10.27 afternoon similated match
  8. pytorch:多项式回归
  9. electron、node
  10. 两种方式实现word转markdown
  11. 放弃高考“打游戏”,别人25岁年入百万、我退役后回家修车
  12. 解决mysql Table ‘xxx’ is marked as crashed and should be repaired的问题。
  13. [NOIp2017 DG Day 2 T1] 奶酪
  14. Windows中的ping命令
  15. 二手笔记本电脑电池测试软件,笔记本电池修复软件Battery Doubler V1.2.1免费已注册版...
  16. 永洪BI到底有多好用?知乎大V用3000字力荐
  17. Androd Camera Yuv Jepg bmp
  18. 【C/C++】静态顺序表详解(附完整源码)
  19. python+selenium移动滑块代码【杭州多测师_王sir】【杭州多测师】
  20. Docker学习总结(46)——生产环境中遇到的Docker常见异常错误总结

热门文章

  1. SwiftTheme--iOS换肤解决方案
  2. 《转》 ImportError: No module named caffe 的解决方案
  3. 警告1909。无法创建快捷方式VMware Workstation Pro.Ink。解决方法(附 VMware_workstation 12的安装方法)
  4. 解决使用mybatis分页插件PageHelper的一个报错问题
  5. Sass Nesting for:悬停不起作用[重复]
  6. 视图的getWidth()和getHeight()返回0
  7. 如何从C#中的通用方法返回NULL?
  8. 遍历JavaScript中的数组
  9. cookie和session 创建和验证 原始的servlet
  10. IdentityHash as hashMap