Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola Pessoal,
Se alguém puder me ajudar, não estou conseguindo corrigir esse erro... Para entender melhor, a ideia é exportar para o mysql informações das colunas no excel, por isso a data na tabela do mysql esta em VARCHAR para não haver erro de envio, porém preciso acrescentar uma condição de vencimento "+5 dias"... e os valores que estou pegando esta dando um erro no uso de função date na variável...
Erro: Fatal error: Call to a member function format() on a non-object in /home/test/public
Segue o código.
public function dateMaturity($date) {
/ Essa parte separa os valores e esta tudo verificado /
$day = substr($date, 0,3);
$mounth = substr($date, 4,-5);
$year = substr($date, 7,4);
$checkDate = checkdate($mounth, $day, $year);
/** Valor checkado e está funcionando *//
if($checkDate){
$convertDate = $year . "-" . $mounth . "-" . $day;
$dateFormat = DateTime::createFromFormat('d/m/Y', $convertDate);
/** O erro esta aqui no $week **/
$week = $dateFormat->format('w');
/** ------------------------- **/
$dateFinal = $dateFormat->format('d/m/Y');
if($week==0){
$dateSoma = strtotime("+5 days",$dateFinal);
}
else if($week>=3){
$dateSoma = strtotime("+5 days",$dateFinal);
}
else{
$dateSoma = strtotime("+3 days",$dateFinal);
}
}
else{ $dateSoma = "Erro"; }
echo $dateSoma;
}
}Testa esse código:
public function dateMaturity($date) {
$dateArray = explode('/', $date);
$checkDate = checkdate($dateArray[1], $dateArray[0], $dateArray[2]);
if($checkDate){
try{
$objDate = DateTime::createFromFormat('d/m/Y', $date);
$week = $objDate->format("w");
if($week==0){
$objDate->add(new DateInterval('P5D'));
}
else if($week>=3){
$objDate->add(new DateInterval('P5D'));
}
else{
$objDate->add(new DateInterval('P3D'));
}
} catch (Exception $e){
echo $e->getMessage();
}
}
else{ $dateSoma = "Erro"; }
echo $objDate->format('d/m/Y');
}
Para informações
[DateTime::createFromFormat](http://php.net/manual/pt_BR/datetime.createfromformat.php)
[DateTime->format()](http://php.net/manual/pt_BR/datetime.format.php)
[DateTime->add()](http://php.net/manual/pt_BR/datetime.add.php)Erro:
Fatal error: Call to a member function format() on a non-object in ....
Bem onde se encontra o $week = objDate....
Estou tentando corrigirQue versão do PHP você está usando?
>
Em 24/09/2017 at 19:12, Luccas Gaulia disse:
[...] por isso a data na tabela do mysql esta em VARCHAR para não haver erro de envio [...]
Isso não faz muito sentido...
>
8 horas atrás, Luccas Gaulia disse:
Erro:
Fatal error: Call to a member function format() on a non-object in...
Se DateTime:createFromFormat não conseguir criar uma data à partir do formato especificado, bool é retornado. Por isso você está recebendo o erro.
Arrumei o erro, porém a data fica igual a estabelecida (não soma)....
A ideia é que, quando entra na quinta a domingo, ganha-se total de 5 dias para o vencimento, o restante 3 dias...