connaitre le nom du jour a partir d'une date

Eléphant du PHP | 417 Messages

01 oct. 2012, 08:55

bonjour,
je cherche une function qui me renvoi le nom du jour selon une date exemple 01-10-2012 = Lundi

Merci d'avance

ViPHP
ViPHP | 2577 Messages

01 oct. 2012, 09:15

Tu trouveras ce que tu cherches la : http://php.net/manual/fr/function.date.php
Soit à partir d'un nombre de 1 à 7 ou 0 à 6, soit à partir de la valeur en anglais.

Eléphant du PHP | 417 Messages

01 oct. 2012, 09:27

merci pour votre réponse ,
mais j'ai rien trouvé dans le lien que tu m'as donné

Eléphant du PHP | 417 Messages

01 oct. 2012, 10:05

peut être j'ai mal expliqué ce que je veux : je cherche enfait a savoir de quel jour il s'agit pour des date passer genre le 28-09-2012 est un dimanche ...

ViPHP
ViPHP | 2577 Messages

01 oct. 2012, 11:09


Eléphant du PHP | 417 Messages

01 oct. 2012, 11:31

:) merci pour le lien :)

Eléphant du PHP | 417 Messages

01 oct. 2012, 14:01

j'uai utilisé la methode que tu m'as donnée est ça marche bien sauf que quand j'ai essayé de l'intégrée a prestashop ça marche plus le code de prestashop arret juste avant la ligne

$date = DateTime::createFromFormat('Y-m-d H:i:s', $dateCmd );

voici le code que j'ai ajouter

$dateCmd = $order->invoice_date;

$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');
	
	
	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;
		}
sachant que $order->invoice_date; vien de fichier en question de prestashop ( et il egale a une date)

pour infos aussi ce fichier est sous forme d'une class donc je sais pas si on peu utilisé la classe datetime a l'interieur d'une autre class ?

Eléphant du PHP | 417 Messages

02 oct. 2012, 08:13

aucune réaction ?

ViPHP
ViPHP | 2577 Messages

02 oct. 2012, 09:26

Que contient $dateCmd ?
Quel message d'erreur ?
As tu regarder si'il y avait une erreur lors de la mise en forme de la date ?

Eléphant du PHP | 417 Messages

02 oct. 2012, 09:47

Que contient $dateCmd ?
$dateCmd = $order->invoice_date; // et $order->invoice_date est une date de type 2012-10-02 09:11:14 par exemple
Quel message d'erreur ?
pas de message d'erreur mais la suite de la page ne s'affiche pas, tous s'arrêt au niveau de la ligne rouge
As tu regarder si'il y avait une erreur lors de la mise en forme de la date ?
pas d'erreur parce que normalement quand je fait un test hors de prestashop celà marche bien (dhailleur tu peux essayer le code suivant il m'arche trés bien)
$dateCmd = "2012-10-02 09:11:14";
	
	$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');
	
	
	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;
		}
		
		echo $dateExpedition;
mais une fois je l'intégre dans prestashop ça marche pas sa s'arrête au niveau de cette ligne :

$date = DateTime::createFromFormat('Y-m-d H:i:s', $dateCmd );

ViPHP
ViPHP | 2577 Messages

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.

Eléphant du PHP | 417 Messages

02 oct. 2012, 11:04

ce que je veux faire on peut pas le faire avec la datetime::add()

voici ce que je veux faire:

je prend la date de la commande :
si c'est un lundi donc je r'ajoute 4 et ça me donne la date d’expédition (le vendredi pour tt commande passé le lundi )
si la commande est passé le mardi, mercredi, jeudi, vendredi ou samedi je r'ajoute 6 jours pour avoir la date d'expédition (faut pas tombé sur un samedi ou dimanche pour expédier)

et si la commande et passé un dimanche la je rajoute 5 jours

voila ce que je veux faire donc

ViPHP
ViPHP | 2577 Messages

02 oct. 2012, 11:11

As tu ajouter des echo ?

Pour l'ajout de jours, regardes la doc. Il faudra que tu détermine le nombre de jours à ajouter et que utilises la fonction pour faire l'ajout.

Eléphant du PHP | 417 Messages

02 oct. 2012, 11:16

pourquoi ajouté des echo ?

bon j'ai fait une function comme tu m'as conseillé mais tjr ça marche hors de prestashop mais quand je l’intègre a prestashop ça marche pas
function getDateExpedition($dateCommande)
	{
	
		$date = DateTime::createFromFormat('Y-m-d H:i:s', $dateCommande );
		$dateCommande = $date->format('D');
		$j = $date->format('d');
		$m = $date->format('m');
		$a = $date->format('Y');
	
	
		if ($dateCommande == "Mon")
			$je = $j + 4;
		elseif (($dateCommande == "Tue") or ($dateCommande == "Wed") or ($dateCommande == "Thu") or ($dateCommande == "Fri") or ($dateCommande == "Sat") )
			$je = $j + 6;
		elseif ($dateCommande == "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;
		}
		
		return $dateExpedition;
	}
	
	
	$dateCmd = "2012-10-02 09:11:14";
	$testDateExpedetion = getDateExpedition($dateCmd);
	
	echo 'la date d\expédition pour une commande passé le : '.$dateCmd.' est le : '.$testDateExpedetion;


ViPHP
ViPHP | 2577 Messages

02 oct. 2012, 13:25

pourquoi ajouté des echo ?
...
Pour voir ce qu'il y a dans $dateCmd entre autre. J'ai du mal à comprendre comment tu peux savoir ce qu'il y a dans $dateCmd sans faire un echo de cette variable.

D'un coté ca marche avec :
$dateCmd = "2012-10-02 09:11:14";
$testDateExpedetion = getDateExpedition($dateCmd);

et de l'autre ca ne marche pas avec
$dateCmd = $order->invoice_date;
$testDateExpedetion = getDateExpedition($dateCmd);

La première chose à vérifier, c'est forcément de faire un echo de $dateCmd ou de $order->invoice_date.