as.period 將 Interval、Duration、difftime 和 numeric 類對象更改為具有指定單位的 period 類對象。
參數
- x
-
間隔、差異時間或數字對象
- unit
-
指定在哪些時間單位中構建周期的字符串。unit 僅針對as.period.numeric 方法和as.period.interval 方法實現。對於as.period.interval,as.period會將間隔轉換為不大於指定單位的單位。
- ...
-
傳遞給as.period的附加參數
細節
用戶必須指定用哪些時間單位來測量該時間段。時間段中每個時間單位的確切長度將取決於它發生的時間。請參閱Period 和period()
。單位的選擇並非無足輕重。通常相等的單位長度可能會有所不同,具體取決於時間段發生的時間。例如,當發生閏秒時,一分鍾比 60 秒長。
由於周期沒有固定長度,因此無法在 Duration 對象之間準確地進行轉換。 Duration 對象以精確的秒數測量時間跨度,請參閱 Duration 。因此,持續時間和周期之間不存在一對一的映射。當與 Duration 對象一起使用時,as.period 提供不精確的估計;持續時間根據最常見的時間單位長度(以秒為單位)分為時間單位。由於月份的長度特別可變,因此不能從持續時間對象中強製得出以月份為單位的期間。對於精確轉換,首先使用 as.interval()
將持續時間轉換為間隔。
如果您請求具有小單位的周期,則將時間間隔強製為周期可能會導致令人驚訝的行為。閏年有 366 天,但一年長。當單位設置為天時,此間隔將轉換為 366 天;當單位設置為年時,此間隔將轉換為 1 年。在日期上添加 366 天通常會得到與添加一年不同的結果。夏令時是這一規定不適用的一個例外。間隔長度根據 UTC 時間線計算,不使用夏令時。因此,以秒或分鍾轉換的周期不會反映夏令時導致的秒和分鍾的實際變化。這些周期將顯示 "naive" 以秒和分鍾為單位的變化,這是由時鍾時間的差異所表明的。請參閱下麵的示例。
例子
span <- interval(ymd_hms("2009-01-01 00:00:00"), ymd_hms("2010-02-02 01:01:01")) # interval
as.period(span)
#> [1] "1y 1m 1d 1H 1M 1S"
as.period(span, unit = "day")
#> [1] "397d 1H 1M 1S"
"397d 1H 1M 1S"
#> [1] "397d 1H 1M 1S"
leap <- interval(ymd("2016-01-01"), ymd("2017-01-01"))
as.period(leap, unit = "days")
#> [1] "366d 0H 0M 0S"
as.period(leap, unit = "years")
#> [1] "1y 0m 0d 0H 0M 0S"
dst <- interval(
ymd("2016-11-06", tz = "America/Chicago"),
ymd("2016-11-07", tz = "America/Chicago")
)
# as.period(dst, unit = "seconds")
as.period(dst, unit = "hours")
#> [1] "25H 0M 0S"
per <- period(hours = 10, minutes = 6)
as.numeric(per, "hours")
#> [1] 10.1
as.numeric(per, "minutes")
#> [1] 606
相關用法
- R lubridate as.interval 將對象更改為間隔
- R lubridate as.duration 將對象更改為持續時間
- R lubridate as_date 將對象轉換為日期或日期時間
- R lubridate am 日期時間是在上午還是下午?
- R lubridate DateTimeUpdate 更改日期對象的組成部分
- R lubridate stamp 基於人性化模板設置日期和時間格式
- R lubridate interval 用於創建和操作 Interval 對象的實用程序
- R lubridate is.difftime x 是 difftime 對象嗎?
- R lubridate 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 second 獲取/設置日期時間的秒部分
- R lubridate quarter 獲取日期時間的財政季度和學期
- R lubridate posix_utils 各種 POSIX 實用程序
- R lubridate date_decimal 將小數轉換為日期
- R lubridate hour 獲取/設置日期時間的小時部分
- R lubridate minute 獲取/設置日期時間的分鍾部分
- R lubridate month 獲取/設置日期時間的月份部分
- R lubridate duration 創建一個持續時間對象。
- R lubridate leap_year 一年是閏年嗎?
- R lubridate local_time 從日期時間向量獲取當地時間。
注:本文由純淨天空篩選整理自Hadley Wickham等大神的英文原創作品 Change an object to a period。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。