Utilizando strtotime() e strftime() para cálculos com data e hora
Nas diversas listas de discussão por e-mail e fóruns sobre PHP que faço parte vejo sempre alguém com dúvida sobre como fazer operações com datas. Sei que a função strtotime() é boa para trabalhar operações de data e hora mas até hoje nunca havia precisado, no momento estou trabalhando em um script para informar aos visitantes de uma loja virtual a hora que o produto será entregue.
Básicamente só preciso verificar a hora atual e somar 3 horas, existem outras coisas especificas, mas para esse texto apenas este calculo é importante.
1 2 3 | <?php echo date("H:i:s", strtotime("3 hours")); ?> |
No código ecima estou somando 3 horas a hora atual do servidor, simples assim campeão. Indo um pouco mais além podemos fazer uma combinação da função strtotime com a strftime e trabalhar um pouco com datas, vejam:
1 2 3 4 5 6 7 8 9 10 11 12 13 | <?php // Seta o local para que os nomes e datas apareçam em português do Brasil setlocale(LC_TIME, 'pt_BR'); //Somando 3 dias ao dia atual echo strftime('%d/%m/%Y', strtotime('+3 days')); //Somando 1 semana, 2 dias, 5 horas e 30 segundos ao dia atual echo strftime('%d/%m/%Y - %H:%M:%S (%A)', strtotime("+1 week 2 days 5 hours 30 seconds")); //Exibe textualmente o dia da semana de determinada data echo strftime('%A', strtotime('30/04/2010')); ?> |
Percebam que a função strftime() tem seus próprios parâmetros, confira:
Parâmetros da função strftime
%a – Dia da semana abreviado de acordo com a localidade
%A – Nome da semana completo de acordo com a localidade
%b – Nome do mês abreviado de acordo com a localidade
%B – Nome do mês completo de acordo com a localidade
%c – Representação da data e hora preferida pela a localidade
%C – Número do século (o ano dividido por 100 e truncado para um inteiro, de 00 até 99)
%d – Dia do mês como um número decimal (de 01 até 31)
%D – Mesmo que %m/%d/%y
%e – Dia do mês como um número decimal, um simples dígito é precedido por espaço (de ‘ 1′ até ‘31′)
%g – Como %G, mas sem o século.
%G – O 4-dígito do ano correspodendo as ISO week number (see %V). Este tem o mesmo formato e valor que %Y, exceto que se o ISO week number pertence ao prévio ou próximo ano, aquele ano é usado ao invés deste.
%h – Mesmo que %b
%H – Hora como um número decimal usando um relógio de 24-horas (de 00 até 23)
%I – Hora como um número decimal usando um relógio de 12-hoas (de 01 até 12)
%j – Dia do ano como número decimal (de 001 até 366)
%m – Mês como número decimal (de 01 até 12)
%M – Minuto como número decimal
%n – Caracter novalinha
%p – Um dos dois `am’ ou `pm’ de acordo com o valor da hora dada, ou as strings correspondentes para a localidade
%r – Hora em a.m. e p.m. notação
%R – Hora em notação de 24 horas
%S – Segundo como um número decimal
%t – Caracter tab
%T – Hora corrente, igual a %H:%M:%S
%u – Dia da semana como número decimal [1,7], com 1 representando Segunda-feira
%U – Dia da semana do ano corrente como número decimal, começando com o primeiro domingo como o primeiro dia da primeira semana
%V – O número da semana corrente ISO 8601:1988 do ano corrente como um número decimal, de 01 até 53, onde semana 1 é a primeira semana que tem pelo menos 4 dias no ano corrente, e com segunda-feira como o primeiro dia da semana. (Use %G ou %g para o componente anual que corresponde ao dia da semana para o para o timestamp especificado.)
%W – Dia da semana do ano corrente como número decimal, começando com o a segunda-feira como o primeiro dia da primera semana
%w – Dia da semana como número decimal, domingo sendo 0
%x – Representação preferida para a data para a localidade corrente sem a hora
%X – Representação preferida para a hora para a localidade corrente sem a data
%y – Ano como número decimal sem o século (de 00 até 99)
%Y – Ano como número decimal incluindo o século
%Z ou %z – Time zone, nome ou abreviação (dependendo do sistema operacional)
%% – A literal `%’ character
Se você gostou deste post, escreva um comentário e/ou cadastre-se em nosso feed.


Comentários
Ainda não há comentários.
Escreva um Comentário