fbpx

Comandos Linux – Comando strftime

Comando Linux strftime

comando strftime

A função strftime () C , parte da biblioteca time.h , formata seqüências de caracteres para representar a data e hora do sistema.

Descrição

strftime () função formata a hora quebrada tm de acordo com o formato de especificação de formato e coloca o resultado no carácter matriz s de tamanho máximo .

O formato especificação é um nulo – terminada cadeia e podem conter sequências de caracteres especiais chamados especificações de conversão, cada um introduzidos por um ‘ % carácter’ e terminados por algum outro carácter conhecido como um personagem especificador de conversão. Todas as outras seqüências de caracteres são seqüências de caracteres comuns.

Os caracteres das seqüências de caracteres comuns (incluindo o byte nulo ) são copiados literalmente do formato para s .

Os caracteres de conversão são substituídos da seguinte maneira.

Sintaxe

#include <time.h>
size_t strftime (char * s , size_t max , formato const char * , const struct tm * tm );

Caracteres de conversão

%umaO nome abreviado do dia da semana de acordo com o código do idioma atual.
%UMAO nome completo do dia da semana de acordo com o código do idioma atual.
% bO nome do mês abreviado de acordo com o código do idioma atual.
% BO nome completo do mês de acordo com o código do idioma atual.
% cA representação preferida de data e hora para o código do idioma atual.
% CO número do século (ano / 100) como um número inteiro de 2 dígitos.
% dO dia do mês como um número decimal (intervalo de 01 a 31).
% DEquivalente a % m / % d / % y . para os americanos. Os americanos devem observar que em outros países % d / % m / % y é bastante comum. No contexto internacional, esse formato é ambíguo e não deve ser usado.
% eComo % d , o dia do mês como um número decimal, mas um zero inicial é substituído por um espaço.
% EModificador: use formato alternativo, veja abaixo.
% FEquivalente a % Y – % m – % d (o formato de data ISO 8601).
% GO ano com base na semana ISO 8601 (consulte as NOTAS) com o século como um número decimal. O ano de 4 dígitos correspondente ao número da semana ISO (consulte % V ). Essa conversão tem o mesmo formato e valor que % Y , exceto que, se o número da semana ISO pertencer ao ano anterior ou seguinte, esse ano será usado.
% gComo % G , mas sem século, ou seja, com um ano de 2 dígitos (00-99).
% hEquivalente a % b .
% HA hora como um número decimal usando um relógio de 24 horas (intervalo de 00 a 23).
%EUA hora como um número decimal usando um relógio de 12 horas (intervalo de 01 a 12).
% jO dia do ano como um número decimal (intervalo de 001 a 366).
% kA hora (relógio de 24 horas) como um número decimal (intervalo de 0 a 23); dígitos únicos são precedidos por um espaço em branco. (Veja também % H. )
%euA hora (relógio de 12 horas) como um número decimal (intervalo de 1 a 12); dígitos únicos são precedidos por um espaço em branco. (Veja também % I. )
% mO mês como um número decimal (intervalo de 01 a 12).
% MO minuto como um número decimal (intervalo de 00 a 59).
% nUm caractere de nova linha .
% OModificador: use formato alternativo, veja abaixo.
% p“AM” ou “PM” de acordo com o valor de tempo especificado ou as seqüências correspondentes para o código do idioma atual. O meio-dia é tratado como “PM” e a meia-noite como “AM”.
% PComo% p, mas em minúsculas: “am” ou “pm” ou uma sequência correspondente para a localidade atual.
% rA hora em notação am ou pm. No código do idioma POSIX, isso é equivalente a % I : % M : % S % p .
% RO tempo na notação de 24 horas ( % H : % M ). (SU) Para uma versão que inclui os segundos, consulte % T abaixo.
% sO número de segundos desde a época, 01-01-2009 00:00:00 +0000 (UTC).
% SO segundo como um número decimal (intervalo de 00 a 60). O intervalo é de até 60 para permitir segundos bissextos ocasionais.
% tUm caractere de tabulação .
% TO tempo na notação de 24 horas ( % H : % M : % S ).
%vocêO dia da semana como decimal, varia de 1 a 7, sendo segunda-feira 1. Veja também % w .
%VOCÊ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 como o primeiro dia da semana 01. Ver também % V e % W .
% VO número da semana ISO 8601 (consulte as NOTAS) do ano atual como um número decimal, varia de 01 a 53, onde a semana 1 é a primeira semana que tem pelo menos 4 dias no ano novo. Veja também % U e % W .
%WO dia da semana como decimal, intervalo de 0 a 6, domingo sendo 0. Veja também % u .
%WO número da semana do ano atual como um número decimal, varia de 00 a 53, começando com a primeira segunda-feira como o primeiro dia da semana 01.
% xA representação preferida da data para a localidade atual sem a hora.
% XA representação de hora preferida para a localidade atual sem a data.
% yO ano como um número decimal sem século (intervalo de 00 a 99).
% YO ano como um número decimal, incluindo o século.
% zO fuso horário numérico + hhmm ou -hhmm (ou seja, o deslocamento de hora e minuto do UTC).
% ZO fuso horário ou nome ou abreviação.
% +A data e hora no formato da data .
%%Um caractere ‘ % ‘ literal .

Algumas especificações de conversão podem ser modificadas precedendo o caractere especificador de conversão pelo modificador E ou O para indicar que um formato alternativo deve ser usado. Se o formato ou especificação alternativa não existir para o código do idioma atual, o comportamento será como se a especificação de conversão não modificada tivesse sido usada. A Especificação Única UNIX (SU) menciona % Ec , % EC , % Ex , % EX , % Ey , % EY , % Od , % Oe , % OH , % OI , % Om , % OM , % OS% Ou , % OU , % OV , % Ow , % OW , % Oy , em que o efeito do modificador O é usar símbolos numéricos alternativos (digamos, algarismos romanos) e o do modificador E é usar um código de idioma representação alternativa dependente.

A estrutura temporal dividida tm é definida em <time.h> . Veja também ctime

Valor de retorno

A função strftime () retorna o número de bytes colocados na matriz s , sem incluir o byte nulo final, desde que a string, incluindo o byte nulo final, se ajuste. Caso contrário, ele retornará 0 e o conteúdo da matriz será indefinido. Esse comportamento se aplica desde pelo menos a libc 4.4.4; versões muito antigas da libc, como a libc 4.4.1, retornariam max se a matriz fosse muito pequena. Observe que o valor de retorno 0 não indica necessariamente um erro; por exemplo, em muitos locais % p produz uma cadeia vazia, que é equivalente a zero.

Meio Ambiente

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

Notas

ISO 8601 Datas Semana % G , % g , e % V Os valores de rendimento calculado a partir do ano-base semanas definido pela norma ISO 8601. Nesse sistema, as semanas começam na segunda-feira e são numeradas de 01 , na primeira semana, até 52 ou 53 , na última semana. A semana 1 é a primeira semana em que quatro ou mais dias se enquadram no ano novo (ou, como sinônimo, a semana 01 é: a primeira semana do ano que contém uma quinta – feira ; ou a semana que tem 4 de janeiro ).

Quando três ou menos dias da primeira semana do ano novo se enquadram nesse ano, o sistema semanal ISO 8601 conta esses dias como parte da semana 53 do ano anterior. Por exemplo, 1 de janeiro de 2010 é uma sexta-feira, o que significa que apenas três dias dessa semana civil caem em 2010. Portanto, o sistema semanal ISO 8601 considera esses dias como parte da semana 53 ( % V ) do ano de 2009 ( % G ); a semana 01 do ano ISO 8601 de 2010 começa na segunda – feira, 4 de janeiro de 2010.

Glibc Notes

O Glibc fornece algumas extensões para especificações de conversão. Essas extensões não são especificadas no POSIX.1-2001, mas alguns outros sistemas fornecem recursos semelhantes. Entre o caractere ‘ % ‘ e o caractere especificador de conversão, um sinalizador opcional e a largura do campo podem ser especificados. Estes precedem os modificadores E ou O , se presentes.

Os seguintes caracteres de sinalização são permitidos:

_(sublinhado)

Coloque uma sequência de resultados numérica com espaços.

(traço)

Não preencha uma sequência de resultados numéricos.

0 0(zero)

Coloque uma sequência de resultados numérica com zeros, mesmo que o caractere especificador de conversão use preenchimento de espaço por padrão.

^(quilate)

Converte caracteres alfabéticos na sequência de resultados em maiúsculas.

#(hash)

Troque o caso da sequência de resultados.

Este sinalizador só funciona com determinados caracteres especificador de conversão e, destes, só é realmente útil com % Z .

Um especificador opcional de largura decimal pode seguir o sinalizador (possivelmente ausente). Se o tamanho natural do campo for menor que essa largura, a sequência de resultados será preenchida (à esquerda) na largura especificada.

Exemplos

"% a,% b% d% l:% M.% S"

A sequência acima formataria a data e a hora para se parecerem: sáb, 13 de julho 1: 32,59

Aqui está um exemplo de um programa que usa strftime () para interpretar essa string:

#include <time.h>
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char * argv [])
{
    char outstr [200];
    time_t t;
    struct tm * tmp;
    t = tempo (NULL);
    tmp = hora local (& t);
    if (tmp == NULL) {
        perror ("localtime");
        sair (EXIT_FAILURE);
    }
     if (strftime (outstr, sizeof (outstr), argv [1], tmp) == 0)
     {
         fprintf (stderr, "strftime retornou 0");
         sair (EXIT_FAILURE);
     }
     printf ("A sequência de resultados é \"% s \ "\ n", outstr);
     exit (EXIT_SUCCESS);
}

Por exemplo, se o programa acima fosse compilado como o arquivo executável a.out , ele poderia ser usado na linha de comando da seguinte maneira:

./a.out '% m'
A sequência de resultados é "11"
./a.out '% 5m'
A sequência de resultados é "00011"
./a.out '% _5m'
A sequência de resultados é "11"

data – gera a data e hora atuais.

22 de novembro de 2019

Sobre nós

A Linux Force Brasil é uma empresa que ama a arte de ensinar. Nossa missão é criar talentos para a área de tecnologia e atender com excelência nossos clientes.

CNPJ: 13.299.207/0001-50
SAC:         0800 721 7901

[email protected]

Comercial  Comercial: (11) 3796-5900

Suporte:    (11) 3796-5900
[email protected]

Copyright © Linux Force Security  - Desde 2011.