"POSIXct"representing calendar dates and times.
# S3 method for POSIXct format(x, format = "", tz = "", usetz = FALSE, …) # S3 method for POSIXlt format(x, format = "", usetz = FALSE, …)
# S3 method for POSIXt as.character(x, …)
strftime(x, format = "", tz = "", usetz = FALSE, …) strptime(x, format, tz = "")
strptime, an object which can be converted to
""is the current time zone, and
"GMT"is UTC. Invalid values are most commonly treated as UTC, on some platforms with a warning.
"%Y-%m-%d %H:%M:%S"if any element has a time component which is not midnight, and
options("digits.secs")is set, up to the specified number of digits will be printed for seconds.
strftimereturn character vectors representing the time.
NAtimes are returned as
NA_character_. The elements are restricted to 256 bytes, plus a time zone abbreviation if
usetzis true. (On known platforms longer strings are truncated at 255 or 256 bytes, but this is not guaranteed by the C99 standard.)
strptimeturns character representations into an object of class
"POSIXlt". The time zone is used to set the
isdstcomponent and to set the
tz != "". If the specified time is invalid (for example "2010-02-30 08:00") all the components of the result are
NA. (NB: this does means exactly what it says -- if it is an invalid time, not just a time that does not exist in some time zone.)
-045. Years after 9999 and before -999 are normally printed with five or more characters. Some platforms support modifiers from POSIX 2008 (and others). On Linux the format
"%04Y"assures a minimum of four characters and zero-padding. The internal code (as used on Windows and by default on macOS) uses zero-padding by default, and formats
%_Ycan be used for space padding and no padding.
"POSIXct", but cause difficulties as they often computed incorrectly. They conventionally have the opposite sign from time-zone specifications (see
Sys.timezone): positive values are East of the meridian. Although there have been time zones with offsets like 00:09:21 (Paris in 1900), and 00:44:30 (Liberia until 1972), offsets are usually treated as whole numbers of minutes, and are most often seen in RFC 822 email headers in forms like
-0800(e.g., used on the Pacific coast of the US in winter). Format
%zcan be used for input or output: it is a character string, conventionally plus or minus followed by two digits for hours and two for minutes: the standards say that an empty string should be output if the offset is unknown, but some systems use the offsets for the time zone in use for the current year.
strftimeconvert objects from the classes
"POSIXct"to character vectors.
strptimeconverts character vectors to class
"POSIXlt": its input
xis first converted by
as.character. Each input string is processed as far as necessary for the format specified: any trailing characters are ignored.
strftimeis a wrapper for
format.POSIXlt, and it and
format.POSIXctfirst convert to class
as.POSIXlt(so they also work for class
"Date"). Note that only that conversion depends on the time zone. The usual vector re-cycling rules are applied to
formatso the answer will be of length of the longer of these 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 AM/PM indicator (if used) and the separators in formats such as
%X, via the setting of the
LC_TIMElocale category. The ‘current locale’ of the descriptions might mean the locale in use at the start of the R session or when these functions are first used. The details of the formats are platform-specific, but the following are likely to be widely available: most are defined by the POSIX standard. A conversion specification is introduced by
%, usually followed by a single letter or
Eand then a single letter. Any character in the format string not part of a conversion specification is interpreted literally (and
%). Widely implemented conversion specifications include
"%a %b %e %H:%M:%S %Y"on input.
%m/%d/%y: the C99 standard says it should be that exact format (but not all OSes comply).
%V). (Accepted but ignored on input.)
%V) as a decimal number. (Accepted but ignored on input.)
%Iand not with
%H. An empty string in some locales (and the behaviour is undefined if used for input in such a locale). Some platforms accept
%Pfor output, which uses a lower-case version: others will output
-0800is 8 hours behind UTC. Values up to
+1400are accepted. (Standard only for output.)
%has part of an input format: see the examples for how to check. When
%Zis used for output with an object with an assigned time zone an attempt is made to use the values for that time zone --- but it is not guaranteed to succeed. Not in the standards and less widely implemented are
"%a %b %e %H:%M:%S %Z %Y". May depend on the locale.
%O[dHImMUVwWy]which may emit numbers in an alternative locale-dependent format (e.g., roman numerals), and
%E[cCyYxX]which can use an alternative ‘era’ (e.g., a different religious calendar). Which of these are supported is OS-dependent. These are accepted for input, but with the standard interpretation. Specific to R is
%OSn, which for output gives the seconds truncated to
0 <= n <= 6decimal places (and if
%OSis not followed by a digit, it uses the setting of
getOption("digits.secs"), or if that is unset,
n = 0). Further, for
%OSwill input seconds including fractional seconds. Note that
%Sdoes not read fractional parts on output. The behaviour of other conversion specifications (and even if other character sequences commencing with
%are conversion specifications) is system-specific. Some systems document that the use of multi-byte characters in
formatis unsupported: UTF-8 locales are unlikely to cause a problem.
strftimeto see how to specify their formats. (On some systems, including Windows,
strftimeis replaced by more comprehensive internal code.)