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 lubridate date 獲取/設置日期時間的日期部分
- R lubridate date_decimal 將小數轉換為日期
- R lubridate dst 獲取日期時間的夏令時指示器
- R lubridate date_utils 各種日期實用程序
- R lubridate decimal_date 將日期轉換為其年份的小數
- R lubridate day 獲取/設置日期時間的天數部分
- R lubridate DateTimeUpdate 更改日期對象的組成部分
- R lubridate stamp 基於人性化模板設置日期和時間格式
- R lubridate interval 用於創建和操作 Interval 對象的實用程序
- R lubridate is.difftime x 是 difftime 對象嗎?
- R lubridate as_date 將對象轉換為日期或日期時間
- R lubridate round_date 日期時間對象的舍入、取整和取整方法
- R lubridate make_difftime 創建一個 difftime 對象。
- R lubridate is.timespan x 是時間長度嗎?
- R lubridate with_tz 獲取不同時區的日期時間
- R lubridate mplus 在日期中添加和減去月份,但不超過新月份的最後一天
- R lubridate cyclic_encoding 日期時間的循環編碼
- R lubridate as.interval 將對象更改為間隔
- R lubridate second 獲取/設置日期時間的秒部分
- R lubridate quarter 獲取日期時間的財政季度和學期
- R lubridate posix_utils 各種 POSIX 實用程序
- R lubridate as.duration 將對象更改為持續時間
- R lubridate hour 獲取/設置日期時間的小時部分
- R lubridate minute 獲取/設置日期時間的分鍾部分
- R lubridate month 獲取/設置日期時間的月份部分
注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Create a duration object.。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。