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


R lubridate duration 創建一個持續時間對象。

duration() 創建具有指定值的持續時間對象。不同單位的條目是累積的。持續時間顯示為時間跨度中的秒數。當此數字較大時,持續時間也會以較大單位顯示估計值,但是底層對象始終記錄為固定的秒數。出於顯示和創建目的,單位使用最常見的長度(以秒為單位)轉換為秒。分鍾 = 60 秒,小時 = 3600 秒,天 = 86400 秒,周 = 604800。由於其可變性,不使用大於周的單位。

用法

duration(num = NULL, units = "seconds", ...)

dseconds(x = 1)

dminutes(x = 1)

dhours(x = 1)

ddays(x = 1)

dweeks(x = 1)

dmonths(x = 1)

dyears(x = 1)

dmilliseconds(x = 1)

dmicroseconds(x = 1)

dnanoseconds(x = 1)

dpicoseconds(x = 1)

is.duration(x)

參數

num

時間單位的數字或字符向量。在字符串表示中,支持所有明確的名稱單位和縮寫以及 ISO 8601 格式; 'm' 代表月份,'M' 代表分鍾,除非存在 ISO 8601 "P" 修飾符(請參閱示例)。支持分數單位。

units

指定 num 引用的單位類型的字符串。當num 為字符時,該參數被忽略。

...

要包含在持續時間及其數量中的時間單位列表。支持秒、分鍾、小時、天、周、月和年。月份和年份的持續時間假定一年由 365.25 天組成。

x

持續時間中包含的單位數的數值。

持續時間對象

細節

持續時間記錄時間跨度內的確切秒數。它們測量準確的時間流逝,但並不總是與以較大時間單位(例如小時、月和年)進行的測量保持一致。這是因為較大時間單位的長度可能會受到閏年和夏令時等慣例的影響。 Base R 提供了第二個類來測量持續時間,即 difftime 類。

可以使用輔助函數 dweeks()ddays()dminutes()dseconds() 輕鬆創建 Duration 對象。這些對象可以與日期時間相加或相減,以創建類似於麵向對象編程的用戶接口。

也可以看看

例子


### Separate period and units vectors

duration(90, "seconds")
#> [1] "90s (~1.5 minutes)"
duration(1.5, "minutes")
#> [1] "90s (~1.5 minutes)"
duration(-1, "days")
#> [1] "-86400s (~-1 days)"

### Units as arguments

duration(day = -1)
#> [1] "-86400s (~-1 days)"
duration(second = 90)
#> [1] "90s (~1.5 minutes)"
duration(minute = 1.5)
#> [1] "90s (~1.5 minutes)"
duration(mins = 1.5)
#> [1] "90s (~1.5 minutes)"
duration(second = 3, minute = 1.5, hour = 2, day = 6, week = 1)
#> [1] "1130493s (~1.87 weeks)"
duration(hour = 1, minute = -60)
#> [1] "0s"

### Parsing

duration("2M 1sec")
#> [1] "121s (~2.02 minutes)"
duration("2hours 2minutes 1second")
#> [1] "7321s (~2.03 hours)"
duration("2d 2H 2M 2S")
#> [1] "180122s (~2.08 days)"
duration("2days 2hours 2mins 2secs")
#> [1] "180122s (~2.08 days)"
# Missing numerals default to 1. Repeated units are added up.
duration("day day")
#> [1] "172800s (~2 days)"

### ISO 8601 parsing

duration("P3Y6M4DT12H30M5S")
#> [1] "110842205s (~3.51 years)"
duration("P23DT23H") # M stands for months
#> [1] "2070000s (~3.42 weeks)"
duration("10DT10M") # M stands for minutes
#> [1] "864600s (~1.43 weeks)"
duration("P23DT60H 20min 100 sec") # mixing ISO and lubridate style parsing
#> [1] "2204500s (~3.65 weeks)"

# Comparison with characters (from v1.6.0)

duration("day 2 sec") > "day 1sec"
#> [1] TRUE


## ELEMENTARY CONSTRUCTORS:

dseconds(1)
#> [1] "1s"
dminutes(3.5)
#> [1] "210s (~3.5 minutes)"

x <- ymd("2009-08-03", tz = "America/Chicago")
x + ddays(1) + dhours(6) + dminutes(30)
#> [1] "2009-08-04 06:30:00 CDT"
x + ddays(100) - dhours(8)
#> [1] "2009-11-10 15:00:00 CST"

class(as.Date("2009-08-09") + ddays(1)) # retains Date class
#> [1] "Date"
as.Date("2009-08-09") + dhours(12)
#> [1] "2009-08-09 12:00:00 UTC"
class(as.Date("2009-08-09") + dhours(12))
#> [1] "POSIXct" "POSIXt" 
# converts to POSIXt class to accomodate time units

dweeks(1) - ddays(7)
#> [1] "0s"
c(1:3) * dhours(1)
#> [1] "3600s (~1 hours)"  "7200s (~2 hours)"  "10800s (~3 hours)"

# compare DST handling to durations
boundary <- ymd_hms("2009-03-08 01:59:59", tz = "America/Chicago")
boundary + days(1) # period
#> [1] "2009-03-09 01:59:59 CDT"
boundary + ddays(1) # duration
#> [1] "2009-03-09 02:59:59 CDT"
is.duration(as.Date("2009-08-03")) # FALSE
#> [1] FALSE
is.duration(duration(days = 12.4)) # TRUE
#> [1] TRUE
源代碼:R/durations.r

相關用法


注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Create a duration object.。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。