STRFTIME(3)

NOME
strftime - formata data e hora

SINÓPSE
#include <time.h>

size_t strftime(char *s, size_t max, const char *format,
				const struct tm *tm);

DESCRIÇÃO
A função strftime() formata a hora quebrada tm de acordo com a especificação de formato format e coloca o resultado na matriz de caracteres s de tamanho max.

Caracteres ordinários colocados na string de formato são copiados para s sem conversão. Especificadores de conversão são introduzidos por um caractere '%' , e são substituídos em s da seguinte forma:

%a  O dia da semana abreviado, de acordo com o localização atual.

%A  O dia da semana completo, de acordo com o localização atual.

%b  O mês abreviado, de acordo com o localização atual.

%B  O mês completo, de acordo com o localização atual.

%c  A representação de data e hora preferida para o localização atual.

%C  O número de século (ano/100), com tipo inteiro de 2 dígitos. (SU)

%d  O dia do mês, com tipo numérico decimal (faixa de 01 a 31).

%D  Equivalente a %m/%d/%y. (Yecch - somente para norte-americanos. Norte-americanos devem notar que, em outros países, %d/%m/%y é de um tanto comum. Isto significa que no contexto internacional este formato é ambíguo e não deve ser usado.) (SU)

%e  Como %d, o dia do mês em formato numérico decimal, mas um zero inicial é substituído por um espaço. (SU)

%E  Modificador: usa formato alternativo, veja abaixo. (SU)

%G  O ano ISO 8601, com século no formato numérico decimal. O ano de 4 dígitos correspondente ao número da semana ISO (veja %V). Este tem o mesmo formato e valor que %y, exceto se o número da semana ISO pertence ao ano anterior ou posterior, neste caso o ano é usado no lugar. (TZ)

%g  Como %G, mas sem o século, isto é, com um ano de 2 dígitos (00-99). (TZ)

%h  Equivalente a %b. (SU)

%H  A hora como um número deciaml, usando um relógio de 24 horas (faixa de 00 a 23).

%I  A hora como um número decimal, usando um relógio de 12 horas (faixa de 01 a 12).

%j  O dia do ano como um número decimal (faixa de 001 a 366).

%k  A hora (relógio de 24 horas) como um número decimal (faixa de 0 a 23); dígitos isolados são precedidos por um espaço em branco. (Veja também %H.) (TZ)

%l  A hora (relógio de 12 horas) como um número decimal (faixa de 1 a 12); dígitos isolados são precedidos por um espaço em branco. (Veja também %I.) (TZ)

%m  O mês como um número decimal (faixa de 01 a 12).

%M  O minuto como um número decimal (faixa de 00 a 59).

%n  Um caractere de nova linha. (SU)

%O  Modificador: usa formato alternativo, veja abaixo. (SU)

%p  correspondente para o localização atual. O meio-dia é tratado como 'pm', e a meia-noite como 'am'.

%P  Como %p, mas em letras minúsculas: 'am' ou 'pm' ou uma string correspeondente para o localização atual. (GNU)

%r  A hora na notação a.m. ou p.m.. Na localização POSIX, isto é equivalente a '%I:%M:%S %p'. (SU)

%R  A hora da notação de 24 horas (%H:%M). (SU) Para uma versão incluindo os segundos, veja %T abaixo.

%s  O número de segundos desde 01/01/1970 00:00:00 UTC. (TZ)

%S  Os segundos como um número decimal (faixa de 00 a 61).

%t  Um caractere de tabulação. (SU)

%T  A hora na notação de 24 horas (%H:%M:%S). (SU)

%u  O dia da semana como um decimal, na faixa de 1 a 7, segunda-feira é 1. Veja também %w. (SU)

%U  O número da semana no ano atual, como um número decimal, na faixa de 00 a 53, começando com o primeiro domingo sendo o primeiro dia da semana 01. Veja também %V e %W.

%V  O número da semana ISO 8601:1988 no ano atual, como um número decimal, na faixa de 01 a 53, onde a semana 1 é a primeira semana que tem pelo menos 4 dias no ano atual, e com um domingo no início da semana. Veja também %U e %W. (SU)

%w  O dia da semana como um decimal, na faixa de 0 a 6, domingo sendo 0. Veja também %u.

%W  O número da semana do ano atual como um número decimal, na faixa de 00 a 53, começando com o primeiro domingo sendo o primeiro dia da semana 01.

%x  A representação preferida de data para o localização atual, sem a hora.

%X  A representação de hora preferida para o localização atual, sem a data.

%y  O ano como um número decimal, sem o século (faixa de 00 a 99).

%Y  O ano como um número decimal, incluindo o século.

%z  O fuso horário como compensação de hora para GMT. Requerido para emitir datas conforme a RFC822 (usando "%a, %d %b %Y %H:%M:%S %z"). (GNU)

%Z  O fuso, nome ou abreviação de hora.

%+  A data e a hora no formato date(1). (TZ)

%%  Um caractere literal '%'.

Alguns especificadores de conversão podem ser modificados ao precedê-los pelos modificadores E ou O para indicar que um formato alternativo deve ser usado. Se o formato ou especificação alternativo não existe para o localização atual, o comportamento será como se fosse usada a especificação de conversão sem modificação. (SU) A Especificação Exclusiva do Unix menciona %Ec, %EC, %Ex, %EX, %Ry, %EY, %Od, %Oe, %OH, %OI, %Om, %OM, %OS, %Ou, %OU, %OV, %Ow, %OW, %Oy, onde o efeito do modificador O é usar símbolos numéricos alternativos (quer dizer, numerais romanos), e o efeito do modificador E é usar uma representação dependente de localização alternativa.

A estrutura de hora quebrada tm é definida em <time.h>. Veja também ctime(3).

VALORES RETORNADOS
A função strftime() retorna o número de caracteres colocados na matriz s, não incluindo o caractere terminal NUL, provided the string, including the terminating NUL, fits. Caso contrário, ele retorna 0, e o conteúdo da matriz é indefinido. (É assim pelo menos desde a libc 4.4.4; versões muito antigas da libc, tal como a libc 4.4.1, retornariam max se a matriz fosse muito pequena.)

Note que o valor de retorno 0 não indica necessariamente um erro; por exemplo, em muitos 'locales' %p produz uma string vazia.

AMBIENTE
As variáveis de ambiente TZ e LC_TIME são usadas.

DE ACORDO COM
ANSI C, SVID 3, ISO 9899. Há inclusões estritas entre o conjunto de conversões dadas em C ANSI (não marcadas), aquelas dadas na Especificação Exclusiva do Unix (marcadas por SU), aquelas dadas no pacote de fusos horários de Olson (marcadas por TZ), e aquelas dadas em glibc (marcadas por GNU), exceto que %+ não é suportado na glibc2. Por outro lado, a glibc2 tem várias outras extensões. POSIX.1 só se refere ao C ANSI; POSIX.2 descreve sob date(1) várias extensões que poderiam se aplicar ao strftime também.

VEJA TAMBÉM
date(1), time(2), ctime(3), setlocale(3), sprintf(3).

TRADUZIDO POR LDP-BR em 21/08/2000.

  Tradução:
Rubens de Jesus Nogueira <darkseid99@usa.net>

  Revisão.:
André Luiz Fassone <lonely_wolf@ig.com.br>