преобразовать дату и время в строку (convert date and time to a string)
Использование в приложениях (Application usage)
The range of values for %S
is [00,60] rather than [00,59] to
allow for the occasional leap second.
Some of the conversion specifications are duplicates of others.
They are included for compatibility with nl_cxtime() and
nl_ascxtime(), which were published in Issue 2.
The %C
, %F
, %G
, and %Y
format specifiers in strftime() always
print full values, but the strptime() %C
, %F
, and %Y
format
specifiers only scan two digits (assumed to be the first two
digits of a four-digit year) for %C
and four digits (assumed to
be the entire (four-digit) year) for %F
and %Y
. This mimics the
behavior of printf() and scanf(); that is:
printf("%2d", x = 1000);
prints "1000"
, but:
scanf(%2d", &x);
when given "1000"
as input will only store 10 in x).
Applications using extended ranges of years must be sure that the
number of digits specified for scanning years with strptime()
matches the number of digits that will actually be present in the
input stream. Historic implementations of the %Y
conversion
specification (with no flags and no minimum field width) produced
different output formats. Some always produced at least four
digits (with 0 fill for years from 0 through 999) while others
only produced the number of digits present in the year (with no
fill and no padding). These two forms can be produced with the
'0'
flag and a minimum field width options using the conversions
specifications %04Y
and %01Y
, respectively.
In the past, the C and POSIX standards specified that %F
produced
an ISO 8601:2004 standard date format, but didn't specify which
one. For years in the range [0001,9999], POSIX.1‐2008 requires
that the output produced match the ISO 8601:2004 standard
complete representation extended format (YYYY-MM-DD) and for
years outside of this range produce output that matches the
ISO 8601:2004 standard expanded representation extended format
(<+/-><Underline>Y</Underline>YYYY-MM-DD). To fully meet
ISO 8601:2004 standard requirements, the producer and consumer
must agree on a date format that has a specific number of bytes
reserved to hold the characters used to represent the years that
is sufficiently large to hold all values that will be shared. For
example, the %+13F
conversion specification will produce output
matching the format "<+/->YYYYYY-MM-DD"
(a leading '+'
or '-'
sign; a six-digit, 0-filled year; a '-'
; a two-digit, leading
0-filled month; another '-'
; and the two-digit, leading 0-filled
day within the month).
Note that if the year being printed is greater than 9999, the
resulting string from the unadorned %F
conversion specifications
will not conform to the ISO 8601:2004 standard extended format,
complete representation for a date and will instead be an
extended format, expanded representation (presumably without the
required agreement between the date's producer and consumer).
In the C or POSIX locale, the E
and O
modifiers are ignored and
the replacement strings for the following specifiers are:
%a The first three characters of %A
.
%A One of Sunday, Monday, ..., Saturday.
%b The first three characters of %B
.
%B One of January, February, ..., December.
%c Equivalent to %a %b %e %T %Y
.
%p One of AM or PM.
%r Equivalent to %I
:%M
:%S %p
.
%x Equivalent to %m
/%d
/%y
.
%X Equivalent to %T
.
%Z Implementation-defined.