Datas no php

1. Datas no php

wesley rengel viana
wesrenv

(usa Nenhuma)

Enviado em 31/03/2008 - 14:20h

Ola pessoal boa tarde, estou tendo um problema ao desenvolver um pequeno software aqui para a empresa em que trabalho, e a pergunta é Como eu consigo calcular em php quantos dias da de uma determiada data a outra ?, estou postando de um form para ums script php a seguinte informação,
<input type .....name='dia_ini'>
<input type .....name='mes_ini'>
<input type .....name='ano_ini'>
<input type .....name='dia_fim'>
<input type .....name='mes_fim'>
<input type .....name='ano_fim'>

chegando no script dessa maneira

$dia_ini=$_post['dia_ini'];
$mes_ini .... até ano_fim , entao presiso calcular de alguma forma quantos dias deu por exemplo do dia 27/03/2008 a 31/04/2008 , ter esse resultado e multiplicar por um valor tipo
$valor_diarias =($dias * 25) . ..tipo 25 seria o valor da diaria no hotel..o problema e conseguir a variavel $dias ..

alguem me ajude por favor serei muito grato, desde ja obrigado

Amo php + apache + mysql !!!







  


2. Re: Datas no php

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 31/03/2008 - 14:51h

Converte para segundos e depois diminui.

Segundos é os segundos desde 1970-01-01 00:00:00.
O php tem isto na date mesmo.

To pesquisando e já repondo melhor



3. tentei posta ha 10 min atras e deu erro mas agora vai

João Marcos Menezes
stremer

(usa Arch Linux)

Enviado em 31/03/2008 - 14:58h

cara, primeiro vc ta com as variaveis em string (que vieram de um form), terá de converte-las para data. Para isto você pode usar a função mktime e terá a data inicial e final em timestamp:

Aqui esta conforme documentação do php:
int mktime ([ int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst ]]]]]]] )

Ai fica facil, só criar uma data com o date() a partir do timestamp.
Não to com php aqui pra testar mas seria mais ou menos assim:

<?

// Vamos calcular o intervalo de 10/01/2008
// ate 15/03/2008
$data1 = mktime(0, 0, 0, 1, 10, 2008);
$data2 = mktime(0, 0, 0, 3, 15, 2008);

// Dividir o numero de milisegundos pelo total
// de um dia
$intervalo = $data2 - $data1;
$dias = $intervalo / 86400000;

?>



4. ah

João Marcos Menezes
stremer

(usa Arch Linux)

Enviado em 31/03/2008 - 14:59h

a data, se vc quiser uma data especifica vc usa o date, senão acho mais seguro calcular na mão.
A mesma coisa que recomendo é sempre que trabalhar com datas, trabalhar com o formato iso
AAAA-MM-DD hh:mi:ss
ex: 2008-03-31 14:59:00


5. Re: Datas no php

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 31/03/2008 - 15:01h

<?php

$diaI = 23;
$mesI = 12;
$anoI = 2008;

$diaF = 30;
$mesF = 12;
$anoF = 2008;

$dataI = $anoI."/".$mesI."/".$diaI;
$dataF = $anoF."/".$mesF."/".$diaF;

$secI = strtotime($dataI);
$secF = strtotime($dataF);

$intervalo = $secF - $secI;

print "de $dataI ate $dataF passaram-se $intervalo segundos ou ". ($intervalo / 3600 /24)." dias\n";
?>


6. elgio

João Marcos Menezes
stremer

(usa Arch Linux)

Enviado em 31/03/2008 - 15:05h

muito cuidado ao trabalhar com datas no formato dd/mm/aaaa ou mm/dd/aaaa. Ja tive alguns problemas por causa de configuração de servidores diferenters, principalmente quando o php roda sob o windows. Eu recomendo utilizar o mktime. Mas ambos os casos devem funcionar, é só uma questão de evitar problemas.


7. Re: Datas no php

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 31/03/2008 - 15:06h

stremer!

Não sabia do mktime, também dá.

Só que VEJA, o mktime também retorna SEGUNDOS, não milisegundos. Deve dividir por 86400

[]'s


8. opa

João Marcos Menezes
stremer

(usa Arch Linux)

Enviado em 31/03/2008 - 15:07h

nem percebi que não tava usando mm/dd/aaaa ou dd/mm/aaaa foi malz.
Mesmo assim ja tive alguns problemas com strtotime, fica a dica, cabe a quem esta programando achar oque é melhor. Se ja tiver a data pronta (de uma base de dados por ex.), mais facil usar strtotime, caso tenha os "parâmetros" separados, melhor usar mktime.


9. putz

João Marcos Menezes
stremer

(usa Arch Linux)

Enviado em 31/03/2008 - 15:09h

é verdade.
Nem percebi hehehe.
To enferrujado de php ja faz tempo que não mexo com ele...
To acostumado com o getTime do java que é milisegundos e cabei confundindo.
mas valeu a intenção, agora é só o camarada aperfeiçoar o programa.


10. Re: Datas no php

Elgio Schlemer
elgio

(usa OpenSuSE)

Enviado em 31/03/2008 - 16:09h

Mas stremer: eu gostei MUITO mais da tua solução, como mktime. A minha precisa "construir" uma string, hehehehe.

A gente mais aprende do que ensina!


11. kkkk

João Marcos Menezes
stremer

(usa Arch Linux)

Enviado em 31/03/2008 - 16:22h

sim.
Como falei: para este caso mktime é melhor.
Mas se você ja tivesse a string vinda de um arquivo texto por exemplo, a história muda...
Mas o bom de forum é isso. Agente agregar cada vez mais conhecimento. Eu aprendo mto por aqui e isso é otimo. Abs






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts