R語言筆記 日期 時間處理函式

2021-07-27 10:44:14 字數 4915 閱讀 6033

> 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...