NOME¶
strftime - formata data e hora
SINOPSE¶
#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 'locale'
corrente.
- %A
- O dia da semana completo, de acordo com o 'locale'
corrente.
- %b
- O mês abreviado, de acordo com o 'locale'
corrente.
- %B
- O mês completo, de acordo com o 'locale'
corrente.
- %c
- A representação de data e hora preferida para o
'locale' corrente.
- %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 'locale' corrente. 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 'locale' corrente. (GNU)
- %r
- A hora na notação a.m. ou p.m.. No 'locale'
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 1970-01-01 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 corrente, 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 corrente, 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 corrente, 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 corrente 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 'locale'
corrente, sem a hora.
- %X
- A representação de hora preferida para o 'locale'
corrente, 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 'locale' corrente, o comportamento
será como se fosse usada a especificação de conversão
não-modificada. (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 'locale'
alternativa.
A estrutura de hora quebrada
tm é definida em
<time.h>.
Veja também
ctime(3).
VALOR DE RETORNO¶
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.
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)
TRADUÇÃO PARA A LÍNGUA PORTUGUESA¶
RUBENS DE JESUS NOGUEIRA <darkseid99@usa.net> (tradu�Æo)
XXXXXX XX XXXXX XXXXXXXX <xxxxxxxxxx@xxx.xxx> (revisÆo)