Meu código para adicionar um dia a uma data retorna uma data antes do dia adicionando: a
2009-09-30 20:24:00
data após a adição de um dia DEVE ser rolada para o próximo mês:1970-01-01 17:33:29
<?php
//add day to date test for month roll over
$stop_date = date('Y-m-d H:i:s', strtotime("2009-09-30 20:24:00"));
echo 'date before day adding: '.$stop_date;
$stop_date = date('Y-m-d H:i:s', strtotime('+1 day', $stop_date));
echo ' date after adding one day. SHOULD be rolled over to the next month: '.$stop_date;
?>
Eu usei código bastante semelhante antes, o que estou fazendo de errado aqui?
date('Y-m-d H:i:s', strtotime($stop_date . ' + 1 day'));
como na resposta que a @ w35l3y deu a você.fonte
Solução mais simples:
fonte
echo (new DateTime('+1 day'))->format('Y-m-d H:i:s');
Unexpected T_OBJECT_OPERATOR” error in PHP
Funcionou para mim: para a data atual
para qualquer data:
fonte
strtotime()
- ele pode lidar com tudo em uma chamada:date('Y-m-d', strtotime($date . " +1 day"));
Tente isto
fonte
Simples de ler e entender de maneira:
fonte
Eu sempre adiciono 86400 (segundos em um dia):
Não é a maneira mais fácil de fazer isso, mas funciona!
fonte
Embora eu concorde com a resposta de Doug Hays, grito aqui para dizer que o motivo pelo qual seu código não funciona é porque strtotime () espera uma INT como o segundo argumento, não uma string (mesmo que represente uma data)
Se você ativar o relatório de erros máximos, verá um erro "Um valor numérico não bem formado", que é o nível E_NOTICE.
fonte
O
modify()
método que pode ser usado para adicionar incrementos a umDateTime
valor existente .Crie um novo
DateTime
objeto com a data e hora atuais:Depois de ter o
DateTime
objeto, você pode manipular seu valor adicionando ou subtraindo períodos:Você pode ler mais no manual do PHP .
fonte
O código a seguir obtém o primeiro dia de janeiro do ano atual (mas pode ser outra data) e adiciona 365 dias a esse dia (mas pode ser N número de dias) usando a classe DateTime e seu método modify () e format ( ):
fonte
Como você já tem uma resposta para o que há de errado com seu código, posso trazer outra perspectiva de como você pode brincar com as datas em geral, e resolver seu problema especificamente.
Muitas vezes você se vê colocando um problema em termos de solução. Essa é apenas uma das razões pelas quais você acaba com um código imperativo . É ótimo se funcionar; existem apenas outras alternativas indiscutivelmente mais sustentáveis. Um deles é um código declarativo . O ponto é perguntar o que você precisa, em vez de como chegar lá.
No seu caso particular, isso pode se parecer com o seguinte. Primeiro, você precisa descobrir o que está procurando, ou seja, descobrir abstrações. No seu caso, parece que você precisa de um encontro . Não é apenas uma data qualquer, mas a que possui alguma representação padrão. Digamos, data ISO8601. Há pelo menos duas implementações: a primeira é uma data analisada de uma sequência formatada em ISO8601 (ou uma sequência em qualquer outro formato atualmente), e a segunda é uma data futura, um dia depois. Assim, o código inteiro pode ser assim:
Para mais exemplos com malabarismo com data e hora, confira este .
fonte