当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R difftime 时间间隔/差异


R语言 difftime 位于 base 包(package)。

说明

时间间隔创建、打印和一些算术。 print() 方法调用这些“time differences”。

用法

time1 - time2

difftime(time1, time2, tz,
         units = c("auto", "secs", "mins", "hours",
                   "days", "weeks"))

as.difftime(tim, format = "%X", units = "auto", tz = "UTC")

## S3 method for class 'difftime'
format(x, ...)
## S3 method for class 'difftime'
units(x)
## S3 replacement method for class 'difftime'
units(x) <- value
## S3 method for class 'difftime'
as.double(x, units = "auto", ...)

## Group methods, notably for round(), signif(), floor(),
## ceiling(), trunc(), abs(); called directly, *not* as Math():
## S3 method for class 'difftime'
Math(x, ...)

参数

time1 , time2

date-timedate 对象。

tz

用于转换的可选 time zone 规范,主要用于 "POSIXlt" 对象。

units

字符串。所需结果的单位。可以缩写。

value

字符串。与 units 类似,但不允许使用缩写。

tim

指定时间间隔的字符串或数值。

format

指定 tim 格式的字符:请参阅 strptime 。默认为locale-specific 时间格式。

x

从类 "difftime" 继承的对象。

...

要传递给其他方法或从其他方法传递的参数。

细节

函数 difftime 计算两个日期/时间对象的差异,并返回 "difftime" 类的对象,该对象具有指示单位的属性。 Math 组方法为该类的对象提供了 roundsigniffloorceilingtruncabssign 方法,并且还有用于组的方法 -通用(请参阅Ops)逻辑和算术运算。

如果 units = "auto" ,则选择一组合适的单位,尽可能最大的单位(不包括 "weeks" ),其中所有绝对差都大于 1。

通过使用 units = "auto" 调用 difftime 来减去日期时间对象会给出此类的对象。或者,as.difftime() 适用于 character-coded 或数字时间间隔;在后一种情况下,必须指定单位,并且 format 不起作用。

"difftime" 对象上可用的算术有限:它们可以与数值向量相加或相减、相乘或相除。此外,通过 "difftime" 对象添加或减去数值向量会将该数值向量隐式转换为与 "difftime" 对象具有相同单位的 "difftime" 对象。有 meansum 的方法(通过 Summary 组通用),以及 diff 通过 diff.default 构建在 "difftime" 算术方法上,特别是 -

"difftime" 对象的单元可以通过 units 函数提取,该函数也有替换形式。如果单位改变,数值也会相应缩放。替换版本保留名称和尺寸等属性。

请注意,units = "days" 表示 24 小时的时间段,因此不考虑夏令时。 "Date" 类对象的差异按照 UTC 时区进行计算。

as.double 方法返回以指定单位表示的数值。使用units = "auto"表示对象的单位。

format 方法只是格式化数值并将单位附加为文本字符串。

警告

因为R遵循 POSIX(以及几乎所有计算机时钟)忽略闰秒,时间差异也是如此。所以在 UTC 时区

    z <- as.POSIXct(c("2016-12-31 23:59:59", "2017-01-01 00:00:01"))
    z[2] - z[1]

报告‘⁠时差2秒⁠’但是3秒过去了,电脑时钟前进了2秒。

如果您想要经过的时间间隔,您需要自己添加任何闰秒。

注意

"months" 这样的单元是不可能的,因为它们的长度不是恒定的。要创建月份、季度或年份的间隔,请使用 seq.Dateseq.POSIXt

例子


(z <- Sys.time() - 3600)
Sys.time() - z                # just over 3600 seconds.

## time interval between release days of R 1.2.2 and 1.2.3.
ISOdate(2001, 4, 26) - ISOdate(2001, 2, 26)

as.difftime(c("0:3:20", "11:23:15"))
as.difftime(c("3:20", "23:15", "2:"), format = "%H:%M") # 3rd gives NA
(z <- as.difftime(c(0,30,60), units = "mins"))
as.numeric(z, units = "secs")
as.numeric(z, units = "hours")
format(z)

也可以看看

DateTimeClasses

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Time Intervals / Differences。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。