ID EN
Data Types & Classes

as.Date

R Base 3.6.2

Functions to convert between character representations and objects of class "Date" representing calendar dates.

Syntax

R
as.Date(x, …)
# S3 method for character
as.Date(x, format, tryFormats = c("%Y-%m-%d", "%Y/%m/%d"),
        optional = FALSE, …)
# S3 method for numeric
as.Date(x, origin, …)
# S3 method for POSIXct
as.Date(x, tz = "UTC", &#8230;)<p></p><p># S3 method for Date
format(x, &#8230;)</p><p># S3 method for Date
as.character(x, &#8230;)</p>

Arguments

Parameter Description
x an object to be converted.
format character string. If not specified, it will try tryFormats one by one on the first non-NA element, and give an error if none works. Otherwise, the processing is via strptime.
tryFormats character vector of format strings to try if format is not specified.
optional logical indicating to return NA (instead of signalling an error) if the format guessing does not succeed.
origin a Date object, or something which can be coerced by as.Date(origin, …) to such an object.
tz a time zone name.
&#8230; further arguments to be passed from or to other methods, including format for as.character and as.Date methods.

Return Value

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

Details

The usual vector re-cycling rules are applied to 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

Examples

Example
R
# NOT RUN {
## locale-specific version of the date
format(Sys.Date(), "%a %b %d")
# }
# NOT RUN {
## 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
# }
# NOT RUN {
## these time zone names are common
as.Date(z, tz = "NZ")
as.Date(z, tz = "HST") # Hawaii
# }

See Also

Date for details of the date class; 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.