> sys.date()
[1] "2017-02-24"
注意:在r中日期實際是double型別,是從2023年1月1日以來的天數
> date()
[1] "fri
feb 24 17:23
:35 2017"
注意:這種方法返回的是字串型別
> sys
.time()
[1] "2017-02-24 17:24
:08cst"
日期/時間 格式
格式意義
示例%d
數字表示的日期(0~31)
01~31
%a縮寫的星期名
mon%a
非縮寫星期名
monday
%m月份(01~12 )
01~12
%b縮寫的月份
jan%b
非縮寫月份
january
%y兩位數的年份
17%y
四位數的年份
2017%h時
00~23%m分
00~59%s秒
00~59
today <- sys.date()
format(today, "%y年%m月%d日")
[1] "2023年02月24日"
> time
<- sys.time()
> format(time, "%y年%m月%d日%h時%m分%s秒")
[1] "2023年02月24日17時54分21秒"
> as.character(today, format="%y年%m月%d日")
[1] "2023年02月24日"
>
> as.character(time, format="%y年%m月%d日%h時%m分%s秒")
[1] "2023年02月24日17時54分21秒"
用as.date()可以將乙個字串轉換為日期值,預設格式是yyyy-mm-dd。
對於規則的格式,則不需要用format指定格式;如果輸入的格式不規則,可以通過format指定的格式讀入;標準格式:年-月-日或者年/月/日;如果不是以上二種格式,則會提供錯誤;
> as.date("2017-02-04")
[1] "2017-02-04"
> as.date("2017/02/04")
[1] "2017-02-04"
另外,形式as.date(x, origin) 返回自引數origin(引數值為一日期)起第x天。如as.date(2, origin=」2017-02-04」)的返回結果為」2017-02-06」。
> as.date(2, origin="2017-02-04")
[1] "2017-02-06"
there are two basic classes of date/times. class 「posixct」 represents the (signed) number of seconds since the beginning of 1970 (in the utc time zone) as a numeric vector. class 「posixlt」 is a named list of vectors representing
posixct 是以2023年1月1號開始的以秒進行儲存,如果是負數,則是2023年以前;正數則是2023年以後。
posixlt 是以列表的形式儲存:年、月、日、時、分、秒;
預設情況下,日期之前是以/或者-進行分隔,而時間則以:進行分隔;
輸入的標準格式為:日期 時間(日期與時間中間有空隔隔開)
時間的標準格式為:時:分 或者 時:分:秒;
如果輸入的格式不是標準格式,則同樣需要使用strptime函式,利用format來進行指定;
> mydate <- as.posixlt('2017-4-19 7:01:00')
> mydate
[1] "2017-04-19 07:01:00 cst"
> class(mydate)
[1] "posixlt"
"posixt"
> mydate <- as.posixct('2017-4-19 7:01:00')
> mydate
[1] "2017-04-19 07:01:00 cst"
> class(mydate)
[1] "posixct"
"posixt"
另外,形式as.posixct(x, origin) 返回自引數origin起的第幾秒。如as.posixct(1488522386, origin=」1970-01-01 00:00:00」)的返回結果為」2017-03-03 14:26:26 cst」,該用法可用於將unix時間轉為r中的時間。(本段 2017-03-03補充)
> as.posixct(1488522386, origin="1970-01-01 00:00:00")
[1] "2017-03-03 14:26:26 cst"
format引數在strptime中為必選,在strftime中為可-1選
strptime強制包含時區,而strftime預設不設定時區。如果strftime設定usetz=true,輸出結果就和strptime一樣(資料型別除外)
strptime得到的是時間型別資料,strftime得到字串。
> mydate <- strptime("30-01-2017", format = "%d-%m-%y")
> mydate
[1] "2017-01-30 cst"
> class(mydate)
[1] "posixlt"
"posixt"
> mydate <- strptime("20170130120005", format = "%y
%m%d
%h%m
%s")
> mydate
[1] "2017-01-30 12:00:05 cst"
> class(mydate)
[1] "posixlt"
"posixt"
> mydate <- strftime("2017-01-30", format = "%d-%m-%y")
> mydate
[1] "30-01-2017"
> class(mydate)
[1] "character"
注:strptime函式使用的是內部c語言函式轉換字串為時間;
而strftime本質上是字串格式化函式,先用as.posixlt將字串轉為時間,然後用format函式輸出字串。
至於format引數,strftime雖然最終使用了strptime,但format引數並沒有傳遞下去,而是作為format函式的引數,用於格式化輸出字串
> today <- sys.date()
> gtd <- as.date("2017-01-01")
> today - gtd
time difference of
57 days
> gtd <- as.date("2017-03-01")
> today - gtd
time difference of -2 days
> now <- sys.time()
> mytime <- strptime("2017-02-01 12:00:08", format = "%y-%m-%d %h:%m:%s")
> difftime(now, mytime)
time difference of
25.95226 days
> difftime(now, mytime, units = "weeks")
time difference of
3.707466 weeks
> difftime(now, mytime, units = "days")
time difference of
25.95226 days
> difftime(now, mytime, units = "hours")
time difference of
622.8543 hours
> difftime(now, mytime, units = "mins")
time difference of
37371.26 mins
> difftime(now, mytime, units = "secs")
time difference of
2242275 secs
weekdays()取日期物件所處的週幾;
months()取日期物件的月份;
quarters()取日期物件的季度;
> mydate <- sys.date()
> mydate
[1] "2017-02-27"
> weekdays(mydate)
[1] "星期一"
> months(mydate)
[1] "二月"
> quarters(mydate)
[1] "q1"
R語言中的時間與日期
r 中的日期與時間 一 儲存格式 r中的三種日期儲存格式分別為posixct,posixlt和date格式,三種格式之間可以使用as.posixct,as.posixlt,as.date進行互換。如果不指定格式,as.date將會輸出乙個 y m d形式的的date 注意,sys.time返回的是乙...
ORACLE 日期時間處理函式
to char 是把日期或數字轉換為字串 to date 是把字串轉換為資料庫中得日期型別轉換函式 to number 將字元轉化為數字 to char 使用to char函式處理數字 to char number,格式 to char salary,99,999.99 使用to char函式處理日...
R語言字元處理函式
字元處理函式用於處理文字型資料。函式描述 nchar x 計算x中字元數量 substr x,start,stop 提取或替換乙個字元向量中的子串 grep pattern,x,ignore.case true,fixed 在x中搜尋某種模式。fixed false,pattern為正規表示式。fi...