STRPTIME(3) | Library Functions Manual | STRPTIME(3) |
strptime
—
converts a character string to a time value
#include
<time.h>
char *
strptime
(const
char *buf, const char
*format, struct tm
*tm);
The strptime
function parses the string
buf according to the specified
format and fills matching data into the structure
tm (described in
mktime(3)).
The format string consists of zero or more directives. A directive is composed of either one or more whitespace characters as defined by isspace(3), an ordinary character (neither ‘%’ nor a whitespace), or a conversion specification. A conversion specification consists of a percent sign (‘%’) followed by one or two conversion characters which specify the replacement required. There must be whitespace or other non-alphanumeric characters between any two conversion specifications.
The following conversion specifications are supported:
%a
%A
%a
.%b
%B
%b
.%c
%C
%d
%D
%e
%F
%g
%G
%h
%b
.%H
%I
%j
%k
%H
.%l
%I
.%m
%M
%n
%p
%r
%R
%S
%s
%t
%T
%u
%U
%V
%w
%W
%x
%X
%y
%Y
%z
UTC
’) specified as:
“[+-]hhmm”, “[+-]hh:mm”, or
“[+-]hh”; ‘UTC
’
specified as: “GMT” (‘Greenwich Mean
Time
’), “UT”
(‘Universal Time
’), or
“Z” (‘Zulu Time
’); a
three character US timezone specified as: “EDT”,
“EST”, “CDT”, “CST”,
“MDT”, “MST”, “PDT”, or
“PST”, with the first letter standing for
‘Eastern
’ (“E”),
‘Central
’ (“C”),
‘Mountain
’ (“M”) or
‘Pacific
’ (“P”), and
the second letter standing for
‘Daylight
’ (“D” or
summer) time or ‘Standard
’
(“S”) time.%Z
%%
The OpenBSD implementation always uses the C locale and ignores the global locale and the thread-specific locale. Alternative conversion modifiers have no effect.
There is no way to specify whether Daylight Saving Time is in
effect when calling strptime
. To use the resulting
tm structure with functions that check the
tm_isdst field, either set it to a negative value,
which will cause mktime(3) to attempt to
divine whether Daylight Saving Time would be in effect for the given time,
or compute the value manually.
For compatibility, certain conversion specifications can be
modified by the E
and O
modifier characters to indicate that an alternative format or specification
should be used rather than the one normally used by the unmodified
conversion specification. As there are currently neither alternative formats
nor specifications supported by the system, the behavior will be as if the
unmodified conversion specification were used.
Case is ignored when matching string items in buf, such as month and weekday names.
If successful, the strptime
function
returns a pointer to the character following the last character parsed.
Otherwise, a null pointer is returned.
The strptime
() function conforms to the
X/Open System Interfaces option of IEEE Std 1003.1-2008
(“POSIX.1”), except that flags and field width
specifications are not supported.
The ‘%F
’,
‘%g
’,
‘%G
’,
‘%k
’,
‘%l
’,
‘%s
’,
‘%u
’,
‘%V
’,
‘%z
’, and
‘%Z
’ conversion specifications are
extensions.
On systems other than OpenBSD, the
LC_TIME
locale(1)
category can cause parsing failures; see CAVEATS in
setlocale(3) for details.
The %Z
format specifier only accepts
timezone abbreviations of the local timezone, or the value
“GMT”. This limitation is caused by the ambiguity of
overloaded timezone abbreviations, for example EST is both Eastern Standard
Time and Eastern Australia Summer Time.
July 19, 2019 | OpenBSD-current |