struct tm *getdate (const char *string);
extern int getdate_err;
#define _GNU_SOURCE
#include <time.h>
int getdate_r (const char *string, struct tm *res);
В отличие от strptime(3), (которая имеет аргумент format), функция getdate() использует форматы, содержащиеся в файле, полный путь к которому содержится в переменной окружения DATEMSK. Первая строка файла, которая совпадает с полученной входной строкой, будет использована для преобразования.
Проверка на совпадение производится без учета регистра.
Лишние пробелы как в шаблоне, так и в преобразуемой строке игнорируются.
Дескрипторы преобразования, которые могут быть указаны в шаблоне, соответствуют используемым с strptime(3). Кроме того, понимается еще один дескриптор:
Если указано %Z, то возвращаемое значение будет установлено в соответствие со временем указанной временной зоны. В противном случае, оно будет установленов соответствие с текущим местным временем.
Если указан только день недели, то берется ближайший день, начиная с сегодня и далее, который соответствует этому дню недели.
Если указан только месяц (и не указан год), то берется первый месяц, эквивалентный заданному, начиная с текущего месяца и далее. Если не указан день, то это будет первый день месяца.
Если не указаны часы, минуты и секунды, то берется текущий час, минута и секунда.
Если не указана дата, но мы знаем час, то будет взят первый час, равный заданному, начиная с текущего часа.
Стандарт POSIX 1003.1-2001 содержит для strptime() дескрипторы преобразования с использованием модификатора %E или %O, в то время как такие дескрипторы не указаны для getdate(). В glibc getdate() реализована с помощью strptime(), таким образом все возможные преобразования в точности совпадают.
В glibc не поддерживается дескриптор преобразования %Z.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |