##运行环境 MRO3.5.1.0
rm(list = ls(all.names = TRUE)) #移除工作空间中所有对象
#获取当前日期
Date.Now_1 <- date()
Date.Now_1 # "Sat Apr 20 09:35:07 2019"
typeof(Date.Now_1) # "character"
class(Date.Now_1) # "character"
Date.Now_2 <- Sys.Date()
Date.Now_2 # "2019-04-20"
typeof(Date.Now_2) # "double"
class(Date.Now_2) # "date"
Date.Now_3<-Sys.time()
Date.Now_3 # "2019-04-20 09:41:19 CST"
typeof(Date.Now_3) # "double"
class(Date.Now_3) # "POSIXct" "POSIXt"
#as.Date(x, format)把字符串转换成日期
Date1 <- "2018/5/10"
Date2<-"18/六月/10"
Date1.New <- as.Date(Date1) #输出"2018-05-10"
Date2.New <- as.Date(Date2, format = "%y/%b/%d") #输出"2018-05-10"
#提取日期的元素
Date1.New.Month <- months(Date1.New) # "五月"
Date1.New.weekday <- weekdays(Date1.New) # "星期四"
Date1.New.quarter <- quarters(Date1.New) #"Q2"
#格式化日期输出字符串
#日期和时间输入字符串可以使用三种方法as.character,format,strftime
Date.Now_2.Weekday <- format(Date.Now_2, format = "%A") #字符型"星期六"
Date.Now_2.AllString <- format(Date.Now_2, format = "%Y(%y),%m(%B-%b),%d,%A-%a") #字符型 "2019(19),04(四月-4月),20,星期六-周六"
Date.Now_2.String <- as.character(Date.Now_2, format = "%Y(%y),%m(%B-%b),%d,%A-%a") #同上
#日期格式和内部格式的转化
Date.Now_2.Num <- as.numeric(Date.Now_2) #18006
Date.Now_2.Num.ToDate <- structure(Date.Now_2.Num, class = "Date") #"2019-04-20"
#使用POSIX类转化日期时间
Date.Now_3.String <- as.character(Date.Now_3) # "2019-04-20 09:59:48"
Date.Now_3.New <- as.POSIXct(Date.Now_3.String)
Date.Now_3.Num <- as.numeric(Date.Now_3) #1555725589
Date.Now_3.Num.ToDate <- structure(Date.Now_3.Num, class = c("POSIXt", "POSIXct")) #"2019-04-20 09:59:48 CST"
Date.Now_3.Date <- strptime(Date.Now_3.String, format = "%Y-%m-%d %H:%M:%S") #"2019-04-20 09:59:48 CST"
typeof(Date.Now_3.Date) #"list"
class(Date.Now_3.Date) #"POSIXlt" "POSIXt"
Date.Now_3.Date.String <- strftime(Date.Now_3.Date,
format = "%Y(%y),%m(%B-%b),%d,%A-%a-%w,%H-%I-%p,%M,%S,%Z-%z") # "2019(19),04(四月-4月),20,星期六-周六-6,11-11-上午,54,12,CST-+0000"
Date.Now_3.Date.String2 <- strftime(Date.Now_3.Date,
format = "%c,%x,%X") # "周六 4月 20 11:54:12 2019,2019/4/20,11:54:12"
Date.Now_3.Date.String3 <- strftime(Date.Now_3.Date,
format = "%j,%U,%W") # "110,15,15"
Date.Now_3.Date.String4 <- format(Date.Now_3.Date,
format = "%j,%U,%W") # "110,15,15"
#时间间隔
DateDifftime <- Date2.New - Date1.New # Time difference of 31 days
DateDifftimeNum <- as.numeric(DateDifftime) # 31
DateDifftime1 <- difftime(Date2.New, Date1.New, units = "weeks")
DateDifftime2 <- difftime(Date2.New, Date1.New, units = "days")
DateDifftime3 <- difftime(Date2.New, Date1.New, units = "hours")
DateDifftime4 <- difftime(Date2.New, Date1.New, units = "mins")
DateDifftime5 <- difftime(Date2.New, Date1.New, units = "secs")
DateDifftime6 <- (Date2.New - Date1.New) / 365.25
attr(DateDifftime6, "units") = "years"