跳到主要內容

R 語言的基本功[時間日期函數]

時間日期函數


1.當前日期時間,有兩種方式:分別為Sys.time()及date()

format(Sys.time(), "%a %b %d %X %Y %Z")
## [1] "週五 五月 04 上午 10:43:41 2018 CST"
format(Sys.time(), "%H:%M:%OS3")
## [1] "10:43:41.758"
sysYear <- format(Sys.time(), '%Y')
sysMonth <- format(Sys.time(), '%m')
sysDay <- format(Sys.time(), '%d')
sysHour <- format(Sys.time(), '%H')
sysMinute <- format(Sys.time(), '%M')
sysSecend <- format(Sys.time(), '%S')

2.當前日期,使用Sys.datw()

today <-Sys.Date()
format(today, format="%B %d %Y")
## [1] "五月 04 2018"

3.轉換日期格式 參考資源:http://www.cnblogs.com/cloudtj/articles/5465874.html

3-1.使用as.

as.character(Sys.Date()) ##把時間向量轉換成字串顯示
## [1] "2018-05-04"
as.Date(5,origin="2018-05-01")
## [1] "2018-05-06"
as.Date("2007-02-01") ##得到"2007-02-01",顯示為字串,但實際是用double存的
## [1] "2007-02-01"
as.Date("2007年2月1日", "%Y年%m月%d日") ##把制式日期字串轉換成日期型態
## [1] "2007-02-01"

3-2.使用format(),亦可以使用as,character(),結果相同

format(Sys.Date(), "%Y-%m-%d %w") ##%w 顯示於星期幾
## [1] "2018-05-04 5"
format(Sys.Date()) ##不指定回傳格式寫法
## [1] "2018-05-04"
format(Sys.Date(), "%Y-%m-%d") ##不指定回傳格式寫法亦可這樣寫
## [1] "2018-05-04"

3-3.回傳特定日期對應的星期、月份、季,分別如下

weekdays() months() quarters()

參考資源:https://www.rdocumentation.org/packages/base/versions/3.5.0/topics/weekdays

julian(Sys.Date(), -2440588) # from a day
## [1] 2458243
## attr(,"origin")
## [1] -2440588
floor(as.numeric(julian(Sys.time())) + 2440587.5) # from a date-time
## [1] 2458242

3-4.求兩日期之差,可透過julian()或diff.Date()顯示

julian(as.Date("2018-09-10"),origin=as.Date("2018-05-04"))[[1]] ##求2018/9/10至2018/5/4的時間差
## [1] 129
##日期適用double儲存的,所以是可以相減
today <- Sys.Date()
gtd <- as.Date("2017-07-01")  
today - gtd
## Time difference of 307 days
##亦可以使用difftime()計算秒、分、小時、天、周
difftime(today, gtd, units="weeks") ##會有小數點後數字,為了好看可以取整數trunc()會比較順眼(如下)
## Time difference of 43.85714 weeks
trunc(difftime(today, gtd, units="weeks"))
## Time difference of 43 weeks
difftime(today, gtd, units="secs")
## Time difference of 26524800 secs
difftime(today, gtd, units="mins")
## Time difference of 442080 mins
difftime(today, gtd, units="hours")
## Time difference of 7368 hours
difftime(today, gtd, units="days")
## Time difference of 307 days

聯絡表單

名稱

以電子郵件傳送 *

訊息 *