lubridate
真夜中から数秒単位で移動する方法を示す投稿があります。午前 0 時からの秒数から時刻への移行はどうですか?
では、06:52:32 を使用して 24752.05 を取得する代わりに、24752.05 を使用して 06:52:32 を取得するにはどうすればよいでしょうか?
as.POSIXct()
真夜中のタイムスタンプとオフセットの合計に 使用します。場合によっては、TZを設定して調整します。
私のデフォルトのタイムゾーンでは:
R> as.POSIXct(trunc(Sys.time(), units="days") + 24752.05)
[1] "2013-01-16 06:52:32.04 CST"
R>
答えは(前の質問と同じように)ベースRでうまく解決できることに注意してください。これは、質問のたびに耐えられない潤滑剤を使用する必要があるという噂が根強いことです。
別のオプション:
format(as.POSIXct('1900-1-1') + 24752.05, '%H:%M:%S')
# [1] "6:52:32"
lubridate
多様性のためだけに使用する:
library(lubridate)
Sys.time() + seconds(24752.05)
または深夜から:
as.Date(Sys.time()) + seconds(24752.05)
もちろん、時間、分、秒を直接計算することもできます。これは、POSIX 時間の定義に基づいています。真夜中の値は常にtime_t
で割り切れ86400
ます。
x <- 24752.05
paste(sprintf("%02d", floor(x / 3600)),
sprintf("%02d", floor(x %% 3600 / 60)),
sprintf("%02d", floor(x %% 60 )),
sep=":"
)
## [1] "06:52:32"