Partilhar via


strftime, wcsftime, _strftime_l, _wcsftime_l

Formatar uma cadeia de caracteres de tempo.

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
tm estrutura de dados.

locale
A localidade a ser usada.

Valor de retorno

strftime Devolve o número de carateres colocados strDest e wcsftime devolve o número correspondente de carateres largos.

Se o número total de caracteres, incluindo o nulo de terminação, for maior que maxsize, ambos strftime e wcsftime retornar 0 e o conteúdo de strDest são indeterminados.

O número de caracteres é strDest igual ao número de caracteres literais no 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 de retorno.

Observações

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, maxsize os caracteres são colocados na cadeia de caracteres. Para obter uma descrição dos campos na timeptr estrutura, consulte asctime. wcsftime é o equivalente de caracteres largos de ; seu argumento de ponteiro de cadeia de caracteres aponta para uma cadeia de strftimecaracteres largos. Estas funções comportam-se de forma idêntica.

Esta função valida os seus parâmetros. Se strDest, formatou timeptr for um ponteiro nulo, ou se a estrutura de dados endereçada tm por timeptr for 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âmetros inválido será invocado, conforme descrito em Validação de parâmetro. Se a execução for permitida para continuar, a função retorna 0 e define errno como EINVAL.

Por padrão, o estado global dessa função tem como escopo o aplicativo. Para alterar esse comportamento, consulte Estado global na CRT.

Mapeamentos de rotina de texto genérico

TCHAR.H rotina _UNICODE e _MBCS não definidos _MBCS definido _UNICODE definido
_tcsftime strftime strftime wcsftime

O format argumento consiste em 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 LC_TIME categoria da localidade atual afeta a formatação de saída do strftime. Para obter mais informações sobre LC_TIMEo , consulte setlocale. As strftime funções e wcsftime usam a localidade definida no momento. As _strftime_l versões e _wcsftime_l dessas funções são idênticas, exceto que elas tomam a localidade como um parâmetro e usam isso em vez da localidade definida atualmente. Para obter mais informações, consulte Locale.

As strftime funções suportam estes códigos de formatação:

Código String 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 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 - 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 decimal (00 - 99)
%G O ano baseado na semana ISO 8601 como um número decimal
%h Nome abreviado do mês (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 um número decimal (00 - 59)
%n Um caractere de nova linha (\n)
%p Indicador A.M./P.M. da localidade para relógio de 12 horas
%r O relógio de 12 horas do local
%R Equivalente a %H:%M
%S Segundo como um número decimal (00 - 59)
%t Um caractere de tabulação horizontal (\t)
%T Equivalente ao %H:%M:%Sformato de hora ISO 8601
%u Dia da semana ISO 8601 como um número decimal (1 - 7; Segunda-feira é 1)
%U Número da semana do ano como um número decimal (00 - 53), em que 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 decimal (00 - 53), em que a primeira segunda-feira é o primeiro dia da semana 1
%x Representação de data para a localidade
%X Representação de tempo para a localidade
%y Ano sem século, como número decimal (00 - 99)
%Y Ano com século, como número decimal
%z O deslocamento do UTC no formato ISO 8601; sem caracteres se o fuso horário for desconhecido
%Z O nome do fuso horário da localidade ou a abreviatura do fuso horário, dependendo das configurações do Registro; sem caracteres se o fuso horário for desconhecido
%% Sinal de percentagem

Como na printf função, o sinalizador pode prefixar # qualquer código de formatação. Nesse caso, o significado do código de formato é alterado da seguinte forma.

Código de formato Significado
%#a, %#A, , %#b, , %#G%#n%#w%#u%#Z%#h%#z%#p%#X%#t%#B%#g%#% # flag é ignorado.
%#c Representação de data e hora longa, apropriada para a localidade. Por exemplo: "Terça-feira, 14 de março de 1995, 12:41:29".
%#x Representação de data longa, apropriada para a localidade. Por exemplo: "Terça-feira, 14 de março de 1995".
%#d, %#D, , %#e, , %#I%#m%#T%#S%#U%#R%#y%#j%#W%#M%#V%#r%#F%#H%#Y Remova zeros ou espaços à esquerda (se houver).

A semana ISO 8601 e o ano baseado na semana produzidos por %V, %ge %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ª, 3ª ou 4ª, os dias anteriores fazem parte da última semana do ano anterior. Para esses dias, %V é substituído por 53, e ambos %g e %G são substituídos pelos dígitos do ano anterior.

Observação

Ao usar uma das strftime funções com um tm ponteiro retornado do gmtime, os valores impressos através dos %Z especificadores e %z não serão precisos. Isso ocorre porque a tm struct, conforme especificado pelo padrão C, não contém as informações para o nome do fuso horário nem para o deslocamento. Em vez disso, as informações de fuso horário são preenchidas por meio das variáveis _timezone globais e _dstbias.

Requerimentos

Rotina Cabeçalho obrigatório
strftime <time.h>
wcsftime <time.h> ou <wchar.h>
_strftime_l <time.h>
_wcsftime_l <time.h> ou <wchar.h>

As _strftime_l funções e _wcsftime_l são específicas da Microsoft. Para obter mais informações sobre compatibilidade, consulte Compatibilidade.

Exemplo

Veja o exemplo para time.

Ver também

Localidade
Gestão do tempo
Manipulação de cadeias de caracteres
localeconv
setlocale, _wsetlocale
strcoll funções
strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l