當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。