2015-04-23 35 views
0

我想要做的是計算兩個日期之間的總天數。如果日期是「yyyy/mm/dd」格式,我這樣做:不同格式的日期之間的R差異

EndDate <- "2012/02/01" 
StartDate <- "1900/01/01" 
DiffBewtweenDates <- data.frame(date=c(EndDate),start=c(StartDate)) 
DiffBewtweenDates$date_diff <- as.Date(as.character(DiffBewtweenDates$date), format="%Y/%m/%d")- 
as.Date(as.character(DiffBewtweenDates$start), format="%Y/%m/%d") 
DiffBewtweenDates 

它的工作。但我被要求以這種格式「FullDayName,FullYearNumber的FullMonthName的DayNumber」來獲取至少EndDate。像這樣的東西「2012年2月1日星期日」

據我瞭解的R手冊,這將是... format="%A, %d of %B of %Y" 但它不工作,我不明白爲什麼。

在此先感謝您的任何想法。

+0

你如何使用它做輸出?在使用as.Date的同時,您提供的格式是輸入字符串的格式,而不是輸出的格式。 – Avinash

回答

1

也許你有你的區域設置更改爲英語:

Sys.setlocale("LC_TIME", "english") 
date <- "Sunday, 1 of February of 2012" 
lubridate::guess_formats(date, orders = "dmy") 
#     dmy 
# "%A, %d of %B of %Y" 

as.Date(date, guess_formats(date, orders = "dmy")) 
# [1] "2012-02-01" 

無論如何,你可以使用lubridate的功能猜測格式許多日期字符串。

1

簡單的計算差異天,得到所希望的,你可以

Sys.setlocale("LC_TIME", "C") 
EndDate <- as.Date("2012/02/01", format = "%Y/%m/%d") 
StartDate <- as.Date("1900/01/01", format = "%Y/%m/%d") 

EndDate - StartDate    
# Time difference of 40938 days 

format(EndDate, "%A, %d of %B of %Y") 
# [1] "Wednesday, 01 of February of 2012"