标题有:如何将POSIX日期转换为日期?
答案 0 :(得分:52)
另一种方法是使用"POSIXt"
格式化strftime()
对象:
R> today <- Sys.time()
R> today
[1] "2012-10-19 19:12:04 BST"
R> doy <- strftime(today, format = "%j")
R> doy
[1] "293"
R> as.numeric(doy)
[1] 293
最好记住POSIX标准中的年份日为零。
答案 1 :(得分:22)
当?POSIXlt
显示时,$yday
日期的POSIXlt
后缀(甚至是此类的矢量)将转换为一年中的某一天。请注意,POSIX将1月1日计为第0天,因此您可能希望在结果中添加1。
我花了很长时间才找到这个,所以我想我ask and answer my own question。
或者,优秀的lubridate
包提供了yday
函数,它只是上述方法的包装器。它方便地为其他单位定义了类似的功能(month
,year
,hour
,...)。
today <- Sys.time()
yday(today)
答案 2 :(得分:3)
我意识到它并不是海报所寻找的东西,但我需要将POSIX date- 次转换为一年中的小数日时间序列分析并最终做到了这一点:
today <- Sys.time()
doy2015f<-difftime(today,as.POSIXct(as.Date("2015-01-01 00:00", tzone="GMT")),units='days')
答案 3 :(得分:2)
data.table
软件包还提供了yday()
函数。
require(data.table)
today <- Sys.time()
yday(today)
答案 4 :(得分:0)
这就是我的方式:
as.POSIXlt(c("15.4", "10.5", "15.5", "10.6"), format = "%d.%m")$yday
# [1] 104 129 134 160