.\" -*- coding: UTF-8 -*- '\" t .\" Copyright 1993 Mitchum DSouza .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" Modified, jmv@lucifer.dorms.spbu.ru, 1999-11-08 .\" Modified, aeb, 2000-04-07 .\" Updated from glibc docs, C. Scott Ananian, 2001-08-25 .\" Modified, aeb, 2001-08-31 .\" Modified, wharms 2001-11-12, remark on white space and example .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH strptime 3 "20 июля 2023 г." "Linux man\-pages 6.05.01" .SH ИМЯ strptime \- преобразование строкового представления времени в структуру времени tm .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#define _XOPEN_SOURCE\fP /* See feature_test_macros(7) */ \fB#include \fP .PP \fBchar *strptime(const char *restrict \fP\fIs\fP\fB, const char *restrict \fP\fIformat\fP\fB,\fP \fB struct tm *restrict \fP\fItm\fP\fB);\fP .fi .SH ОПИСАНИЕ Функция \fBstrptime\fP() является конвертирующей функцией, дополняющей \fBstrftime\fP(3): она преобразует символьную строку, на которую указывает \fIs\fP, сохраняя значения в структуре \fItm\fP (описывает время в виде компонент, broken\-down time) согласно формата, заданного в \fIformat\fP. .PP The broken\-down time structure \fItm\fP is described in \fBtm\fP(3type). .PP Аргумент \fIformat\fP является символьной строкой, состоящей из описателей поля и текстовых символов, напоминающей \fBscanf\fP(3). Каждый описатель поля состоит из символа \fB%\fP с последующим символом, который указывает на замену описателя поля. Остальные символы в строке \fIformat\fP должны совпадать со строкой входных данных. Исключениями являются пробелы, которые совпадают с любым количеством пробелов в строке входных данных. Между любыми двумя описателями полей должно быть пустое место (пробелы) или другие алфавитно\-цифровые символы. .PP Функция \fBstrptime\fP() обрабатывает строку ввода слева направо. Каждый из трёх возможных входных элементов (пробел, буква или форматирующие символы) обрабатываются один за другим. Если ввод не соответствует строке форматирования, то функция прекращает работу. Оставшиеся части формата и данных не обрабатываются. .PP Ниже приведён список поддерживаемых описателей полей. В случае поиска текстовой строки (например, день недели или месяц), сравнение происходит вне зависимости от регистра символов. В случае с цифрами допустимы начальные нули. .TP \fB%%\fP Символ \fB%\fP. .TP \fB%a\fP или \fB%A\fP Название дня недели согласно текущей локали, в форме аббревиатуры или полного имени. .TP \fB%b\fP, \fB%B\fP или \fB%h\fP Название месяца согласно текущей локали, в форме аббревиатуры или полного имени. .TP \fB%c\fP Дата и время, отображенные согласно текущей локали. .TP \fB%C\fP The century number (0\[en]99). .TP \fB%d\fP или \fB%e\fP The day of month (1\[en]31). .TP \fB%D\fP Эквивалент \fB%m/%d/%y\fP (американское представление даты, которое может запутать не американцев, особенно с учетом того, что \fB%d/%m/%y\fP широко используется в Европе. Форматом ISO 8601 является \fB%Y\-%m\-%d\fP). .TP \fB%H\fP The hour (0\[en]23). .TP \fB%I\fP The hour on a 12\-hour clock (1\[en]12). .TP \fB%j\fP The day number in the year (1\[en]366). .TP \fB%m\fP The month number (1\[en]12). .TP \fB%M\fP The minute (0\[en]59). .TP \fB%n\fP Обязательный пробел. .TP \fB%p\fP Локализованный эквивалент AM или PM (примечание: его может не быть). .TP \fB%r\fP Время по 12\-ти часовым часам (используя AM или PM локали). В локали POSIX это эквивалентно \fB%I:%M:%S %p\fP. Если \fIt_fmt_ampm\fP пусто в поле \fBLC_TIME\fP текущей локали, то поведение не определено. .TP \fB%R\fP Эквивалент \fB%H:%M\fP. .TP \fB%S\fP The second (0\[en]60; 60 may occur for leap seconds; earlier also 61 was allowed). .TP \fB%t\fP Обязательный пробел. .TP \fB%T\fP Эквивалент \fB%H:%M:%S\fP. .TP \fB%U\fP The week number with Sunday the first day of the week (0\[en]53). The first Sunday of January is the first day of week 1. .TP \fB%w\fP The ordinal number of the day of the week (0\[en]6), with Sunday = 0. .TP \fB%W\fP The week number with Monday the first day of the week (0\[en]53). The first Monday of January is the first day of week 1. .TP \fB%x\fP Дата в локализованном формате представления. .TP \fB%X\fP Время в локализованном формате представления. .TP \fB%y\fP The year within century (0\[en]99). When a century is not otherwise specified, values in the range 69\[en]99 refer to years in the twentieth century (1969\[en]1999); values in the range 00\[en]68 refer to years in the twenty\-first century (2000\[en]2068). .TP \fB%Y\fP Год, включая столетие (например, 1991). .PP Некоторые описатели полей могут быть изменены модификаторами E или O, указывающими, что нужно использовать альтернативный формат или спецификацию. Если альтернативный формат или спецификация не существует в текущей локали, то используются неизменённые описатели полей. .PP Модификатор E указывает на то, что строка ввода может содержать альтернативные локале\-зависимые версии представления даты и времени: .TP \fB%Ec\fP Альтернативный формат представления даты и времени в текущей локали. .TP \fB%EC\fP Альтернативный формат представления базового года в зависимости от текущей локали. .TP \fB%Ex\fP Альтернативный формат представления даты в зависимости от текущей локали. .TP \fB%EX\fP Альтернативный формат представления времени в зависимости от текущей локали. .TP \fB%Ey\fP Альтернативный формат представления смещения от \fB%EC\fP в зависимости от текущей локали. .TP \fB%EY\fP Альтернативный формат полного представления года. .PP Модификатор O указывает, что числовой ввод может производиться в альтернативном формате в зависимости от текущей локали: .TP \fB%Od\fP или \fB%Oe\fP Число месяца с использованием альтернативных чисел локали; предшествующие нули можно ставить, но это необязательно. .TP \fB%OH\fP Часы (0\-24) с использованием альтернативных чисел локали. .TP \fB%OI\fP Часы (1\-12) с использованием альтернативных чисел локали. .TP \fB%Om\fP Месяц с использованием альтернативных чисел локали. .TP \fB%OM\fP Минуты с использованием альтернативных чисел локали. .TP \fB%OS\fP Секунды с использованием альтернативных чисел локали. .TP \fB%OU\fP Номер недели в году (воскресенье — первый день недели) с использованием альтернативных чисел локали. .TP \fB%Ow\fP The ordinal number of the day of the week (Sunday=0), using the locale's alternative numeric symbols. .TP \fB%OW\fP Номер недели в году (понедельник — первый день недели) с использованием альтернативных чисел локали. .TP \fB%Oy\fP Год (смещение от \fB%C\fP) с использованием альтернативных чисел локали. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" Возвращаемым значением функции является указатель на первый символ, не обработанный вызовом. В случае, когда строка ввода содержит больше символов, чем требуется для строки формата, возвращаемое значение будет указателем на место за последним обработанным символом. В случае, когда вся строка ввода обработана, возвращается указатель на завершающий символ строки null. Если \fBstrptime\fP() не может найти все соответствия строке формата, то возникает ошибка и возвращается значение NULL. .SH АТРИБУТЫ Описание терминов данного раздела смотрите в \fBattributes\fP(7). .TS allbox; lbx lb lb l l l. Интерфейс Атрибут Значение T{ .na .nh \fBstrptime\fP() T} Безвредность в нитях MT\-Safe env locale .TE .sp 1 .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ POSIX.1\-2001, SUSv2. .SH ЗАМЕЧАНИЯ .\" .PP .\" This function is available since libc 4.6.8. .\" Linux libc4 and libc5 includes define the prototype unconditionally; .\" glibc2 includes provide a prototype only when .\" .B _XOPEN_SOURCE .\" or .\" .B _GNU_SOURCE .\" are defined. .\" .PP .\" Before libc 5.4.13 whitespace .\" (and the \[aq]n\[aq] and \[aq]t\[aq] specifications) was not handled, .\" no \[aq]E\[aq] and \[aq]O\[aq] locale modifier characters were accepted, .\" and the \[aq]C\[aq] specification was a synonym for the \[aq]c\[aq] specification. В принципе, эта функция не инициализирует \fItm\fP, а только сохраняет указанные значения. Это означает, что \fItm\fP должна быть инициализирована до этого вызова. Существует небольшая разница между системами UNIX. Функция из glibc не не изменяет поля, которые не описаны явно, за исключением пересчитываемых полей \fItm_wday\fP и \fItm_yday\fP, если изменился один из элементов: день, месяц или год. .PP .\" in the 20th century by libc4 and libc5. .\" It is taken to be a year .\" In libc4 and libc5 the code for %I is broken (fixed in glibc; .\" %OI was fixed in glibc 2.2.4). The \[aq]y\[aq] (year in century) specification is taken to specify a year in the range 1950\[en]2049 by glibc 2.0. It is taken to be a year in 1969\[en]2068 since glibc 2.1. .SS "Замечания по glibc" Для симметрии glibc пытается поддерживать в \fBstrptime\fP() тот же формат символов что и в \fBstrftime\fP(3) (в большинстве случаев, соответствующие поля анализируются, но поле в \fItm\fP не изменяется). В результате: .TP \fB%F\fP Эквивалентно \fB%Y\-%m\-%d\fP в формате ISO 8601. .TP \fB%g\fP The year corresponding to the ISO week number, but without the century (0\[en]99). .TP \fB%G\fP Год, соответствующий номеру недели по ISO (например, 1991). .TP \fB%u\fP The day of the week as a decimal number (1\[en]7, where Monday = 1). .TP \fB%V\fP The ISO 8601:1988 week number as a decimal number (1\[en]53). If the week (starting on Monday) containing 1 January has four or more days in the new year, then it is considered week 1. Otherwise, it is the last week of the previous year, and the next week is week 1. .TP \fB%z\fP Часовой пояс согласно спецификациям стандарта RFC\-822/ISO 8601. .TP \fB%Z\fP Название часового пояса. .PP Аналогично, учитывая расширения GNU для \fBstrftime\fP(3), \fB%k\fP принято считать синонимом \fB%H\fP, а \fB%l\fP — синонимом для \fB%I\fP, и \fB%P\fP синонимом \fB%p\fP. И .TP \fB%s\fP Количество секунд с начала эпохи, с 1970\-01\-01 00:00:00 +0000 (UTC). Если нет поддержки для високосных секунд, то они не учитываются. .PP В реализации glibc не требуется пустого места (пробелов) между двумя описателями полей. .SH ПРИМЕРЫ Следующий пример демонстрирует использование \fBstrptime\fP() и \fBstrftime\fP(3). .PP .\" SRC BEGIN (strptime.c) .EX #define _XOPEN_SOURCE #include #include #include #include \& int main(void) { struct tm tm; char buf[255]; \& memset(&tm, 0, sizeof(tm)); strptime("2001\-11\-12 18:31:01", "%Y\-%m\-%d %H:%M:%S", &tm); strftime(buf, sizeof(buf), "%d %b %Y %H:%M", &tm); puts(buf); exit(EXIT_SUCCESS); } .EE .\" SRC END .SH "СМ. ТАКЖЕ" \fBtime\fP(2), \fBgetdate\fP(3), \fBscanf\fP(3), \fBsetlocale\fP(3), \fBstrftime\fP(3) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан Alexander Golubev , Azamat Hackimov , Hotellook, Nikita , Spiros Georgaras , Vladislav , Yuri Kozlov и Иван Павлов . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .