Ir para conteúdo
Fórum Script Brasil
  • 0

Subtracao De Datas


Halfar

Pergunta

O que há de errado com a minha subtracao de datas, está retornando um valor estranho..veja o codigo abaixo:

$xDolarInicial = 2007-01-06

// verifica qual o dia da semana

$dia = strtotime($xDolarInicial);

$dia_semana = date("w", $dia);

echo "dia semana" . $dia_semana . "<P>";

$dias = array("Domingo", "Segunda-feira", "Terca-feira", "Quarta_feira", "Quinta-feira", "Sexta-feira", "Sabado");

if($dias[$dia_semana]== "Sabado"){

$xDolarInicial = mktime(0,0,0,date("m",$xDolarInicial),date("d",$xDolarInicial)-1,date("Y",$xDolarInicial));

$dia = date("d", $xDolarInicial);

$mês = date("m", $xDolarInicial);

$ano = date("Y", $xDolarInicial);

}

a data que mktime está retornando é: 1969-12-31

fiz vários testes. a parte inicial do programa que recupera o dia da semana está correto. É somente mktime que retorna errado. Já tentei colocar data no formato portugues, com barra, com traço ...de todo o jeito... o resultado final é sempre este dai...

alguém saberia dizer onde está o erro?

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Isto está sendo interpretado como uma subtração:

$xDolarInicial = 2007-01-06
Deixe assim:
$xDolarInicial = "2007-01-06";

Use setlocale() juntamente com strftime(), para que não seja necessário criar arrays com nomes de meses e semanas.

Dê uma olhada nisto também:

http://scriptbrasil.com.br/forum/index.php?showtopic=97703

Abraços,

Beraldo

Link para o comentário
Compartilhar em outros sites

  • 0

a variavel $xDolarInicial já está dentro de uma variavel no programa...eu coloquei a data ai apenas para exemplificar para voces, apenas esqueci de colocar entre aspas. Para que não fique duvidas, a variavel $xDolarInicial está assim no programa:

$xDolarInicial = substr($Inicio,0,4) . "/" . substr($Inicio,4,2) . "/" . $DiaInicial;

bem, de qualquer forma tem uma data dentro de $xDolarInicial.

Link para o comentário
Compartilhar em outros sites

  • 0

Nesta parte:

$dia_ = date("d", $xDolarInicial);
$mês = date("m", $xDolarInicial);
$ano = date("Y", $xDolarInicial);

* coloquei o "_" após "dia" para diferenciar da variável $dia já utilizada.

Troque $xDolarInicial por $dia, que é a data no formato timestamp.

Abraços,

Beraldo

Link para o comentário
Compartilhar em outros sites

  • 0

agora sim deu certo... realmente tinha que pegar o timestamp contida na variavel dia...

embora não entendo porque não deu certo do jeito que fiz, pois em um exemplo em um livro php consta assim:

$data = mktime(0,0,0, date("m"), date("d")+18, date("Y"));

a única diferenca é que minha data estava dentro de uma variavel...

Link para o comentário
Compartilhar em outros sites

  • 0

Não funcionava daquele jeito pois $xDolarInicial não era um timestamp, tipo requerido pelo segundo argumento de date().

Veja estas duas linhas:

$dia = strtotime($xDolarInicial);

$xDolarInicial = mktime(0,0,0,date("m",$xDolarInicial),date("d",$xDolarInicial)-1,date("Y",$xDolarInicial));

A segunda está errada pois você usou xDolarInicial em vez de dia. Aliás, nem é necessária a segunda linha, pois $dia já contém o valor que $xDolarInicial deveria conter após o retorno de mktime(). ;)

Abraços,

Beraldo

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...