| STRPTIME(3) | Manual do Programador Linux | STRPTIME(3) |
strptime - converte uma representação de hora do tipo string para uma estrutura de hora tm
#include <time.h>
char *strptime(const char *s, const char *formato, struct tm *tm);
strptime() é a função complementar a strftime() e converte a string de caracteres apontada por s para valores que são armazenadas na estrutura tm apontada por tm, usando o formato especificado pelo formato. Aqui o formato é uma string de caracteres que consiste de descritores de campo e caracteres de texto, reminiscentes do scanf(3). Cada descritor de campo consiste de um caractere % seguido por outros caracteres que especificam a sustituição para o descritor de campo. Todos os outros caracteres na string formato devem ter um caractere que combine na string de entrada. Exceções são os espaços em branco na string de formato que podem casar com zero ou mais espaços em branco na string de entrada.
A função strptime() processa a string de entrada da direita para a esquerda. Cada um dos três elementos de entrada possíveis (espaço em branco, literal ou formato) são manipulados um após o outro. Se a entrada não pode ser casada com a string de formato, a função pára. O restante das strings de formato e de entrada não são processadas.
Os seguintes descritores de campo são suportados:
Maiúsculas e minúsculas são ignoradas ao encontrar itens como nomes de meses ou dias da semana.
Alguns descritores de campo podem ser modificados pelos caracteres modificadores E e O para indicar que um formato ou uma especificação alternativa devem ser usados. Se o formato ou a especificação alternativa não existem no 'locale' corrente, são usados os descritores de campo não modificados.
O modificador E especifica que a string de entrada pode conter versões alternativas da representação de data e hora que são dependentes do 'locale':
O modificador O especifica que a entrada numérica pode estar em um formato alternativo dependente do 'locale':
A estrutura de horas quebrada tm é definida em <time.h> como segue:
struct tm
{
int tm_sec; /* segundos */
int tm_min; /* minutos */
int tm_hour; /* horas */
int tm_mday; /* dia do mês */
int tm_mon; /* mês */
int tm_year; /* ano */
int tm_wday; /* dia da semana */
int tm_yday; /* dia do ano */
int tm_isdst; /* horário de verão */
};
O valor de retorno de uma função é um ponteiro para o primeiro caractere não processado nesta chamada de função. Caso a string de entrada contenha mais caracteres que o requerido pela string de formato, o valor de retorno aponta logo depois do último caractere de entrada consumido. No caso em que a string de entrada inteira seja consumida, o valor de retorno aponta para o byte NUL no final da string. Se strptime() falha em encontrar toda a string de formato, e portanto ocorre um erro, a função retorna NULL.
A princípio, esta função não inicializa tm, mas apenas armazena os valores especificados. Isto significa que tm deve ser inicializado antes da chamada. Detalhes diferem um pouco entre diferentes sistemas Unix. A implementação da libc GNU não toca naqueles campos que não são especificados explicitamente, exceto por recomputar os campos tm_wday e tm_yday se qualquer um dos elementos ano, mês ou dia mudaram.
Esta função é disponível somente em bibliotecas mais recentes que a versão 4.6.5. As inclusões da libc4 e da libc5 do Linux definem o protótipo incondicionalmente; a inclusão glibc2 fornece um protótipo somente quando _XOPEN_SOURCE ou _GNU_SOURCE são definidos. Os caracteres modificadores de 'locale' E e O são aceitos desde a libc 5.4.13. A especificação 'y' (ano no século) é tomada para especificar um ano no século XX na libc4 e na libc5. Será um ano na faixa de 1950 a 2049 pela glib2.0, e um ano na faixa de 1969 a 2068 pela glibc2.1.
RUBENS DE JESUS NOGUEIRA <darkseid99@usa.net> (tradução) XXXXXX XX XXXXX XXXXXXXX <xxxxxxxxxx@xxx.xxx> (revisão)
| 26 de setembro de 1994 | GNU |