strftime
, wcsftime
, _strftime_l
, _wcsftime_l
Formate uma cadeia de caracteres de hora.
Sintaxe
size_t strftime(
char *strDest,
size_t maxsize,
const char *format,
const struct tm *timeptr
);
size_t _strftime_l(
char *strDest,
size_t maxsize,
const char *format,
const struct tm *timeptr,
_locale_t locale
);
size_t wcsftime(
wchar_t *strDest,
size_t maxsize,
const wchar_t *format,
const struct tm *timeptr
);
size_t _wcsftime_l(
wchar_t *strDest,
size_t maxsize,
const wchar_t *format,
const struct tm *timeptr,
_locale_t locale
);
Parâmetros
strDest
Cadeia de caracteres de saída.
maxsize
Tamanho do strDest
buffer, medido em caracteres (char
ou wchar_t
).
format
Cadeia de caracteres de controle de formato.
timeptr
estrutura de dados tm
.
locale
A localidade a ser usada.
Valor retornado
strftime
retorna o número de caracteres colocados em strDest
e wcsftime
retorna o número correspondente de caracteres largos.
Se o número total de caracteres, incluindo a terminação nula, é mais de maxsize
, ambos strftime
e wcsftime
retornam 0 e os conteúdos de strDest
serão indeterminados.
O número de caracteres em strDest
é igual ao número de caracteres literais em format
, mais quaisquer caracteres que possam ser adicionados por format
meio de códigos de formatação. O nulo de terminação de uma cadeia de caracteres não é contado no valor retornado.
Comentários
As strftime
funções e wcsftime
formatam o valor de tm
tempo de timeptr
acordo com o argumento fornecido format
e armazenam o resultado no buffer strDest
. No máximo, caracteres maxsize
são colocados na cadeia de caracteres. Para obter uma descrição dos campos na estrutura timeptr
, consulte asctime
. wcsftime
é o equivalente de caractere largo de strftime
; seu argumento de cadeia de caracteres aponta para uma cadeia de caracteres largos. Caso contrário, essas funções se comportam de forma idêntica.
Essa função valida seus parâmetros. Se strDest
, format
, ou timeptr
for um ponteiro nulo, ou se a estrutura de dados endereçada tm
for timeptr
inválida (por exemplo, se contiver valores fora do intervalo para a hora ou data), ou se a format
cadeia de caracteres contiver um código de formatação inválido, o manipulador de parâmetro inválido será invocado, conforme descrito em Validação de parâmetro. Se a execução puder continuar, a função retornará 0 e definirá errno
como EINVAL
.
Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, confira Estado global no CRT.
Mapeamentos de rotina de texto genérico
Rotina TCHAR.H |
_UNICODE e _MBCS não definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_tcsftime |
strftime |
strftime |
wcsftime |
O format
argumento consiste de um ou mais códigos, como em printf
, os códigos de formatação são precedidos por um sinal de porcentagem (%
). Os caracteres que não começam com %
são copiados inalterados para strDest
. A categoria LC_TIME
da localidade atual afeta a formatação de saída de strftime
. (Para obter mais informações sobre LC_TIME
, consulte setlocale
.) As strftime
funções e wcsftime
usam a localidade definida no momento. As versões _strftime_l
e _wcsftime_l
dessas funções são idênticas, exceto que usam a localidade como parâmetro e a usam em vez da localidade definida atualmente. Para obter mais informações, consulte Localidade.
As funções strftime
dão suporte a esses códigos de formatação:
Código | Cadeia de caracteres de substituição |
---|---|
%a |
Nome abreviado do dia da semana na localidade |
%A |
Nome completo do dia da semana na localidade |
%b |
Nome abreviado do mês na localidade |
%B |
Nome completo do mês na localidade |
%c |
Representação de data e hora apropriada para a localidade |
%C |
O ano dividido por 100 e truncado para um inteiro, como um número decimal (00-99) |
%d |
Dia do mês como um número decimal (01-31) |
%D |
Equivalente a %m/%d/%y |
%e |
Dia do mês como um número decimal (1 a 31), onde dígitos únicos são precedidos por um espaço |
%F |
Equivalente a %Y-%m-%d |
%g |
Os últimos 2 dígitos do ano baseado na semana ISO 8601 como um número decimais (00 a 99) |
%G |
O ano baseado em semana ISO 8601 como um número decimal |
%h |
Nome do mês abreviado (equivalente a %b ) |
%H |
Hora em formato de 24 horas (00–23) |
%I |
Hora em formato de 12 horas (01–12) |
%j |
Dia do ano como número decimal (001–366) |
%m |
Mês como número decimal (01–12) |
%M |
Minuto como número decimal (00–59) |
%n |
Caractere de nova linha (\n ) |
%p |
Indicador A.M./P.M. da localidade para relógio de 12 horas |
%r |
Hora do relógio de 12 horas da localidade |
%R |
Equivalente a %H:%M |
%S |
Segundo como um número decimal (00-59) |
%t |
Um caractere de guia horizontal (\t ) |
%T |
Equivalente a %H:%M:%S , o formato de tempo ISO 8601 |
%u |
Dia da semana ISO 8601 como um número decimal (1 a 7; Segunda-feira é 1) |
%U |
Número da semana do ano como um número decimais (00-53), onde o primeiro domingo é o primeiro dia da semana 1 |
%V |
Número da semana ISO 8601 como um número decimal (00-53) |
%w |
Dia da semana como um número decimal (0–6; domingo é 0) |
%W |
Número da semana do ano como um número decimais (00-53), onde a primeira segunda-feira é o primeiro dia da semana 1 |
%x |
Representação de data para a localidade |
%X |
Representação de hora para a localidade |
%y |
Ano sem século, como o número decimal (00-99) |
%Y |
Ano com século, como o número decimal |
%z |
O deslocamento de UTC no formato ISO 8601; nenhum caractere se o fuso horário for desconhecido |
%Z |
O nome do fuso horário ou abreviação de fuso horário da localidade, dependendo das configurações do Registro; Nenhum caractere se o fuso horário é desconhecido |
%% |
Símbolo de porcentagem |
Como na função printf
, o #
sinalizador pode ser prefixo em qualquer código de formatação. Nesse caso, o significado do código de formatação é alterado da seguinte maneira.
Código de formatação | Significado |
---|---|
%#a , %#A , %#b , %#B , %#g %#p %#t %#u %#G %#X %#h %#Z %#n %#w %#z ,%#% |
# sinalizador é ignorado. |
%#c |
Representação longa de data e hora, apropriada para a localidade. Por exemplo: "Terça-feira, 14 de março de 1995, 12:41:29". |
%#x |
Representação longa de data, apropriada para a localidade. Por exemplo: "Terça-feira, 14 de março de 1995". |
%#d , %#D , %#e , %#F , %#H %#I %#j %#m %#M %#r %#R %#S %#T %#U %#V %#W %#y %#Y |
Remova os zeros à esquerda (se houver). |
A semana ISO 8601 e o ano baseado em semana produzidos por %V
, %g
, e %G
, usa uma semana que começa na segunda-feira. A semana 1 é a semana que contém o quarto dia de janeiro, que é a primeira semana que inclui pelo menos quatro dias do ano. Se a primeira segunda-feira do ano for a 2ª, a 3ª ou a 4ª, os dias anteriores fazem parte da última semana do ano anterior. Para esses dias, %V
é substituído por 53 e %g
e %G
são substituídos pelos dígitos do ano anterior.
Observação
Ao usar uma das funções strftime
com um ponteiro tm
retornado gmtime
, os valores impressos por meio dos especificadores %Z
e %z
não serão precisos. Isso ocorre porque o struct tm
conforme especificado pelo C Standard não contém as informações de nome de fuso horário nem diferença de hora. Em vez disso, as informações de fuso horário são preenchidas pelas variáveis globais _timezone
e _dstbias
.
Requisitos
Rotina | Cabeçalho necessário |
---|---|
strftime |
<time.h> |
wcsftime |
<time.h> ou <wchar.h> |
_strftime_l |
<time.h> |
_wcsftime_l |
<time.h> ou <wchar.h> |
As funções _strftime_l
e _wcsftime_l
são específicas da Microsoft. Para obter informações sobre compatibilidade, consulte Compatibilidade.
Exemplo
Confira o exemplo de time
.
Confira também
Localidade
Gerenciamento de tempo
Manipulação de cadeia de caracteres
localeconv
setlocale
, _wsetlocale
Funções strcoll
strxfrm
, wcsxfrm
, _strxfrm_l
, _wcsxfrm_l