Page 1 sur 2

connaitre le nom du jour a partir d'une date

Posté : 01 oct. 2012, 08:55
par miiidooo19
bonjour,
je cherche une function qui me renvoi le nom du jour selon une date exemple 01-10-2012 = Lundi

Merci d'avance

Re: connaitre le nom du jour a partir d'une date

Posté : 01 oct. 2012, 09:15
par Mazarini
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.

Re: connaitre le nom du jour a partir d'une date

Posté : 01 oct. 2012, 09:27
par miiidooo19
merci pour votre réponse ,
mais j'ai rien trouvé dans le lien que tu m'as donné

Re: connaitre le nom du jour a partir d'une date

Posté : 01 oct. 2012, 10:05
par miiidooo19
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 ...

Re: connaitre le nom du jour a partir d'une date

Posté : 01 oct. 2012, 11:09
par Mazarini

Re: connaitre le nom du jour a partir d'une date

Posté : 01 oct. 2012, 11:31
par miiidooo19
:) merci pour le lien :)

Re: connaitre le nom du jour a partir d'une date

Posté : 01 oct. 2012, 14:01
par miiidooo19
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 ?

Re: connaitre le nom du jour a partir d'une date

Posté : 02 oct. 2012, 08:13
par miiidooo19
aucune réaction ?

Re: connaitre le nom du jour a partir d'une date

Posté : 02 oct. 2012, 09:26
par Mazarini
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 ?

Re: connaitre le nom du jour a partir d'une date

Posté : 02 oct. 2012, 09:47
par miiidooo19
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 );

Re: connaitre le nom du jour a partir d'une date

Posté : 02 oct. 2012, 10:38
par Mazarini
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.

Re: connaitre le nom du jour a partir d'une date

Posté : 02 oct. 2012, 11:04
par miiidooo19
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

Re: connaitre le nom du jour a partir d'une date

Posté : 02 oct. 2012, 11:11
par Mazarini
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.

Re: connaitre le nom du jour a partir d'une date

Posté : 02 oct. 2012, 11:16
par miiidooo19
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;


Re: connaitre le nom du jour a partir d'une date

Posté : 02 oct. 2012, 13:25
par Mazarini
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.