不同格式的日期之间的R差异

问题描述:

我想要做的是计算两个日期之间的总天数。如果日期是“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

也许你有你的区域设置更改为英语:

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的功能猜测格式许多日期字符串。

简单的计算差异天,得到所希望的,你可以

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"