par
Mazarini » 02 oct. 2012, 10:38
A part ajouter des echo dans ton script, je ne vois pas ce que l'on peux faire pour comprendre ce qui se passe.
Mon soupçon est que ta date est un timestamp et pas un string.
$dateCmd = $order->invoice_date;
echo $dateCmd,'<br>';
$date = DateTime::createFromFormat('Y-m-d H:i:s', $dateCmd );
$dateCmd = $date->format('D');
$j = $date->format('d');
$m = $date->format('m');
$a = $date->format('Y');
echo $dateCmd,'<br>';
echo $j,'<br>';
echo $m,'<br>';
echo $a,'<br>';
if ($dateCmd == "Mon")
$je = $j + 4;
elseif (($dateCmd == "Tue") or ($dateCmd == "Wed") or ($dateCmd == "Thu") or ($dateCmd == "Fri") or ($dateCmd == "Sat") )
$je = $j + 6;
elseif ($dateCmd == "Sun")
$je = $j + 5;
if ($je < 31 )
$dateExpedition = $je.'-'.$m.'-'.$a;
else
{
$je = $je - 30;
$m = $m + 01;
if ($m == 13)
{
$m = 01;
$a = $a + 1;
}
$dateExpedition = $je.'-'.$m.'-'.$a;
}
Au passage, le plus propre serai de faire une fonction avec la date $order->invoice_date en paramètre et qui retourne la date d'expédition calculée. ou le nombre de jour à ajouter. Il y a une fonction date_add() (ou DateTime::add()) qui pourrait d'ailleurs te rendre service. Parce que ton script ne fonctionne pas fin février à priori.
A part ajouter des echo dans ton script, je ne vois pas ce que l'on peux faire pour comprendre ce qui se passe.
Mon soupçon est que ta date est un timestamp et pas un string.
[php]$dateCmd = $order->invoice_date;
echo $dateCmd,'<br>';
$date = DateTime::createFromFormat('Y-m-d H:i:s', $dateCmd );
$dateCmd = $date->format('D');
$j = $date->format('d');
$m = $date->format('m');
$a = $date->format('Y');
echo $dateCmd,'<br>';
echo $j,'<br>';
echo $m,'<br>';
echo $a,'<br>';
if ($dateCmd == "Mon")
$je = $j + 4;
elseif (($dateCmd == "Tue") or ($dateCmd == "Wed") or ($dateCmd == "Thu") or ($dateCmd == "Fri") or ($dateCmd == "Sat") )
$je = $j + 6;
elseif ($dateCmd == "Sun")
$je = $j + 5;
if ($je < 31 )
$dateExpedition = $je.'-'.$m.'-'.$a;
else
{
$je = $je - 30;
$m = $m + 01;
if ($m == 13)
{
$m = 01;
$a = $a + 1;
}
$dateExpedition = $je.'-'.$m.'-'.$a;
}
[/php]
Au passage, le plus propre serai de faire une fonction avec la date $order->invoice_date en paramètre et qui retourne la date d'expédition calculée. ou le nombre de jour à ajouter. Il y a une fonction date_add() (ou DateTime::add()) qui pourrait d'ailleurs te rendre service. Parce que ton script ne fonctionne pas fin février à priori.