\HeaderA{as.POSIX*}{Date-time Conversion Functions}{as.POSIX*}
\aliasA{as.double.POSIXlt}{as.POSIX*}{as.double.POSIXlt}
\aliasA{as.POSIXct}{as.POSIX*}{as.POSIXct}
\methaliasA{as.POSIXct.Date}{as.POSIX*}{as.POSIXct.Date}
\methaliasA{as.POSIXct.date}{as.POSIX*}{as.POSIXct.date}
\methaliasA{as.POSIXct.dates}{as.POSIX*}{as.POSIXct.dates}
\methaliasA{as.POSIXct.default}{as.POSIX*}{as.POSIXct.default}
\methaliasA{as.POSIXct.numeric}{as.POSIX*}{as.POSIXct.numeric}
\methaliasA{as.POSIXct.POSIXlt}{as.POSIX*}{as.POSIXct.POSIXlt}
\aliasA{as.POSIXlt}{as.POSIX*}{as.POSIXlt}
\methaliasA{as.POSIXlt.character}{as.POSIX*}{as.POSIXlt.character}
\methaliasA{as.POSIXlt.Date}{as.POSIX*}{as.POSIXlt.Date}
\methaliasA{as.POSIXlt.date}{as.POSIX*}{as.POSIXlt.date}
\methaliasA{as.POSIXlt.dates}{as.POSIX*}{as.POSIXlt.dates}
\methaliasA{as.POSIXlt.default}{as.POSIX*}{as.POSIXlt.default}
\methaliasA{as.POSIXlt.factor}{as.POSIX*}{as.POSIXlt.factor}
\methaliasA{as.POSIXlt.numeric}{as.POSIX*}{as.POSIXlt.numeric}
\methaliasA{as.POSIXlt.POSIXct}{as.POSIX*}{as.POSIXlt.POSIXct}
\keyword{utilities}{as.POSIX*}
\keyword{chron}{as.POSIX*}
\begin{Description}\relax
Functions to manipulate objects of classes \code{"POSIXlt"} and
\code{"POSIXct"} representing calendar dates and times.
\end{Description}
\begin{Usage}
\begin{verbatim}
as.POSIXct(x, tz = "", ...)
as.POSIXlt(x, tz = "", ...)

## S3 method for class 'character':
as.POSIXlt(x, tz = "", format, ...)

## S3 method for class 'numeric':
as.POSIXlt(x, tz = "", origin, ...)

## S3 method for class 'POSIXlt':
as.double(x, ...)
\end{verbatim}
\end{Usage}
\begin{Arguments}
\begin{ldescription}
\item[\code{x}] An object to be converted.
\item[\code{tz}] A timezone specification to be used for the conversion,
\emph{if one is required}.  System-specific (see \LinkA{time zones}{time zones}),
but \code{""} is the current timezone, and \code{"GMT"} is UTC
(Universal Time, Coordinated).
\item[\code{...}] further arguments to be passed to or from other methods.
\item[\code{format}] character string giving a date-time format as used
by \code{\LinkA{strptime}{strptime}}.
\item[\code{origin}] a date-time object, or something which can be coerced by
\code{as.POSIXct(tz="GMT")} to such an object.
\end{ldescription}
\end{Arguments}
\begin{Details}\relax
The \code{as.POSIX*} functions convert an object to one of the two
classes used to represent date/times (calendar dates plus time to the
nearest second).  They can convert a wide variety of objects,
including objects of the other class and of classes \code{"Date"},
\code{"date"} (from package \pkg{\LinkA{date}{date}} or
\pkg{\LinkA{survival}{survival}}), \code{"chron"} and
\code{"dates"} (from package \pkg{\LinkA{chron}{chron}}) to these
classes.  Dates without times are treated as being at midnight UTC.

They can also convert character strings of the formats
\code{"2001-02-03"} and \code{"2001/02/03"} optionally followed by
white space and a time in the format \code{"14:52"} or
\code{"14:52:03"}.  (Formats such as \code{"01/02/03"} are ambiguous
but can be converted via a format specification by
\code{\LinkA{strptime}{strptime}}.)  Fractional seconds are allowed.
Alternatively, \code{format} can be specified for character vectors or
factors: if it is not specified and no standard format works for the
first non-\code{NA} input an error is thrown.

Logical \code{NA}s can be converted to either of the classes, but no
other logical vectors can be.

The \code{as.double} method converts \code{"POSIXlt"} objects to
\code{"POSIXct"}.

If you are given a numeric time as the number of seconds since an
epoch, see the examples.
\end{Details}
\begin{Value}
\code{as.POSIXct} and \code{as.POSIXlt} return an object of the
appropriate class.  If \code{tz} was specified, \code{as.POSIXlt}
will give an appropriate \code{"tzone"} attribute.
\end{Value}
\begin{Note}\relax
If you want to extract specific aspects of a time (such as the day of
the week) just convert it to class \code{"POSIXlt"} and extract the
relevant component(s) of the list, or if you want a character
representation (such as a named day of the week) use
\code{\LinkA{format.POSIXlt}{format.POSIXlt}} or \code{\LinkA{format.POSIXct}{format.POSIXct}}.

If a timezone is needed and that specified is invalid on your system,
what happens is system-specific but it will probably be ignored.
\end{Note}
\begin{SeeAlso}\relax
\LinkA{DateTimeClasses}{DateTimeClasses} for details of the classes;
\code{\LinkA{strptime}{strptime}} for conversion to and from character
representations. \code{\LinkA{Sys.timezone}{Sys.timezone}} for details of the
(system-specific)naming of time zones.
\end{SeeAlso}
\begin{Examples}
\begin{ExampleCode}
(z <- Sys.time())             # the current datetime, as class "POSIXct"
unclass(z)                    # a large integer
floor(unclass(z)/86400)       # the number of days since 1970-01-01
(z <- as.POSIXlt(Sys.time())) # the current datetime, as class "POSIXlt"
unlist(unclass(z))            # a list shown as a named vector

## suppose we have a time in seconds since 1960-01-01 00:00:00 GMT
z <- 1472562988
# ways to convert this
as.POSIXct(z, origin="1960-01-01")                # local
as.POSIXct(z, origin="1960-01-01", tz="GMT")      # in UTC
as.POSIXct(z, origin=ISOdatetime(1960,1,1,0,0,0)) # local
ISOdatetime(1960,1,1,0,0,0) + z                   # local

## SPSS dates (R-help 2006-02-16)
z <- c(10485849600, 10477641600, 10561104000, 10562745600)
as.Date(as.POSIXct(z, origin="1582-10-14", tz="GMT"))

as.POSIXlt(Sys.time(), "GMT") # the current time in UTC
## Not run: 
## These may not be correct names on your system
as.POSIXlt(Sys.time(), "America/New_York")  # in New York
as.POSIXlt(Sys.time(), "EST5EDT")           # alternative.
as.POSIXlt(Sys.time(), "EST" )   # somewhere in Eastern Canada
as.POSIXlt(Sys.time(), "HST")    # in Hawaii
as.POSIXlt(Sys.time(), "Australia/Darwin")
## End(Not run)
\end{ExampleCode}
\end{Examples}

