
Last chance! 50% off unlimited learning
Sale ends in
"Date"
representing calendar dates.
as.Date(x, ...)
"as.Date"(x, format, ...)
"as.Date"(x, origin, ...)
"as.Date"(x, tz = "UTC", ...)
"format"(x, ...)
"as.character"(x, ...)
"%Y-%m-%d"
then "%Y/%m/%d"
on the first
non-NA
element, and give an error if neither works.
Otherwise, the processing is via strptime
as.Date(origin, ...)
to such an object.format
for as.character
and as.Date
methods.format
and as.character
methods return a character vector
representing the date. NA
dates are returned as NA_character_
.The as.Date
methods return an object of class "Date"
.
x
and
format
so the answer will be of length that of the longer of the
vectors.Locale-specific conversions to and from character strings are used where appropriate and available. This affects the names of the days and months.
The as.Date
methods accept character strings, factors, logical
NA
and objects of classes "POSIXlt"
and
"POSIXct"
. (The last is converted to days by ignoring
the time after midnight in the representation of the time in specified
time zone, default UTC.) Also objects of class "date"
(from
package date) and "dates"
(from
package chron). Character strings are processed
as far as necessary for the format specified: any trailing characters
are ignored.
as.Date
will accept numeric data (the number of days since an
epoch), but only if origin
is supplied.
The format
and as.character
methods ignore any
fractional part of the date.
locales
to query or set a locale. Your system's help pages on strftime
and strptime
to see
how to specify their formats. Windows users will find no help page
for strptime
: code based on glibc is used (with
corrections), so all the format specifiers described here are
supported, but with no alternative number representation nor era
available in any locale.
## read in date info in format 'ddmmmyyyy'
## This will give NA(s) in some locales; setting the C locale
## as in the commented lines will overcome this on most systems.
## lct <- Sys.getlocale("LC_TIME"); Sys.setlocale("LC_TIME", "C")
x <- c("1jan1960", "2jan1960", "31mar1960", "30jul1960")
z <- as.Date(x, "%d%b%Y")
## Sys.setlocale("LC_TIME", lct)
z
## read in date/time info in format 'm/d/y'
dates <- c("02/27/92", "02/27/92", "01/14/92", "02/28/92", "02/01/92")
as.Date(dates, "%m/%d/%y")
## date given as number of days since 1900-01-01 (a date in 1989)
as.Date(32768, origin = "1900-01-01")
## Excel is said to use 1900-01-01 as day 1 (Windows default) or
## 1904-01-01 as day 0 (Mac default), but this is complicated by Excel
## incorrectly treating 1900 as a leap year.
## So for dates (post-1901) from Windows Excel
as.Date(35981, origin = "1899-12-30") # 1998-07-05
## and Mac Excel
as.Date(34519, origin = "1904-01-01") # 1998-07-05
## (these values come from http://support.microsoft.com/kb/214330)
## Experiment shows that Matlab's origin is 719529 days before ours,
## (it takes the non-existent 0000-01-01 as day 1)
## so Matlab day 734373 can be imported as
as.Date(734373, origin = "1970-01-01") - 719529 # 2010-08-23
## (value from
## http://www.mathworks.de/de/help/matlab/matlab_prog/represent-date-and-times-in-MATLAB.html)
## Time zone effect
z <- ISOdate(2010, 04, 13, c(0,12)) # midnight and midday UTC
as.Date(z) # in UTC
## these time zone names are common
as.Date(z, tz = "NZ")
as.Date(z, tz = "HST") # Hawaii
Run the code above in your browser using DataLab