【上一篇:64.关于date-time组件的“四舍五入”】
【下一篇:66.关于时间跨度-time span(二)】
前面学习了如何获得统一格式的"R时间",接下来是关于date-time之间的计算:相减、相加、相乘和相除。
代表时间跨度的有三个重要的类:durations(持续时间)、periods(周期)、intervals(时间间隔)。
durations:以秒(second)为单位计算时间跨度。在duration维度下,分、时、天、周等大的时间单位都用精确的秒数来表示。这些时间单位之间的换算关系是:1分=60秒,1小时=60分,1天=24小时,1周=7天,一年=365.25天。
相关函数及其Usage如下,这些函数的作用是创建一个Duration对象:
# 创建duration对象的函数
> duration(num = NULL, units = "seconds", ...)
函数用法:
# 下面例子中90s是duration结果,(~1.5 minutes)是一个较大的单位估计的值
> duration(90, "seconds")
[1] "90s (~1.5 minutes)"
# 多个部分的结果要累加
> duration(second = 3, minute = 1.5, hour = 2, day = 6, week = 1)
[1] "1130493s (~1.87 weeks)"
# 另一种参数传递的方式
> duration("2days 2hours 2mins 2secs")
[1] "180122s (~2.08 days)"
下面的函数是一些很方便的构造函数:
x可以是数字向量,返回值当然也是向量
> dseconds(x = 1)
[1] "1s"
> dminutes(x = 1)
[1] "60s (~1 minutes)"
> dhours(x = 1)
[1] "3600s (~1 hours)"
> ddays(x = 1)
[1] "86400s (~1 days)"
> dweeks(x = 1)
[1] "604800s (~1 weeks)"
# 周以上的时间单位按照一年等于365.25天计算,所以一个月等于86400*365.25/12秒
> dmonths(x = 1)
[1] "2629800s (~4.35 weeks)"
# 一年等于365.25,这是一个估计的值
> dyears(x = 1)
[1] "31557600s (~1 years)"
# 毫秒
> dmilliseconds(x = 1)
[1] "0.001s"
# 微秒
> dmicroseconds(x = 1)
[1] "1e-06s"
# 纳秒
> dnanoseconds(x = 1)
[1] "1e-09s"
# 皮秒
> dpicoseconds(x = 1)
[1] "1e-12s"
# 判断是不是duration对象
> is.duration(x)
[1] FALSE
duration对象的相加和相乘:
> 2 * dyears(1)
[1] "63115200s (~2 years)"
> dyears(1) + dweeks(12) + dhours(15)
[1] "38869200s (~1.23 years)"
> today()
[1] "2021-09-22"
> (tomorrow <- today() + ddays(1))
[1] "2021-09-23"
> (last_year <- today() - dyears(1))
[1] "2020-09-21 18:00:00 UTC"
为什么相减结果就变成date-time了呢?相加是date。
网友评论