原生格式
R中自帶的時(shí)間數(shù)據(jù)有3種格式肥隆。
POSIXct格式本質(zhì)上是從1970年起始到某時(shí)刻的秒數(shù)冈敛。
POSIXlt格式是將年月日時(shí)分秒儲存的一個(gè)list惧盹。
> x <- Sys.time()
> y <- as.POSIXlt(x)
> x ; y
[1] "2018-02-23 19:54:03 CST"
[1] "2018-02-23 19:54:03 CST"
> unclass(x)
[1] 1519386843
> unclass(y)
$sec
[1] 3.42422
$min
[1] 54
#下略
> y$sec #可以用list的方法調(diào)取內(nèi)容
[1] 3.42422
> y$min
[1] 54
Date格式,儲存從1970年開始到現(xiàn)在的日數(shù)肝集。
> as.Date(x)
[1] "2018-02-23"
和string的相互轉(zhuǎn)換
strptime()接受string輸入瞻坝,輸出POSIXct或POSIXlt格式的日期數(shù)據(jù)。as.posixct,as.posixlt,as.date函數(shù)都是strptime的wrapper杏瞻。
strptime是‘STRing Parse TIME’的縮寫所刀,它對參數(shù)的設(shè)定有較為嚴(yán)格的要求衙荐。
strftime則接受時(shí)間格式,返回string勉痴。它是‘STRing Format TIME’的縮寫赫模。
> strftime(y,'It was %d %B, %Y')
[1] "It was 23 二月, 2018"
運(yùn)算
對POSIX格式加減一個(gè)正整數(shù),可以前后移動秒數(shù)蒸矛。對Date格式加減正整數(shù)則是前后移動天數(shù)瀑罗。
兩個(gè)同格式的時(shí)間數(shù)據(jù)可以做減法。減法輸出結(jié)果的格式是‘difftime’雏掠,unclass之后是整數(shù)斩祭。
> as.Date(x) - as.Date('1926-08-17')
Time difference of 33428 days
difftime()函數(shù)能夠更精確地控制輸出差值的精確度,可以到小時(shí)乡话,分鐘摧玫,秒。
時(shí)間格式數(shù)據(jù)同樣可以輸入seq,rep,round和cut函數(shù)作為參數(shù)绑青。