Calcul date php

Fermé
philias001 - 1 juin 2007 à 13:53
 Lolochev - 14 févr. 2011 à 06:25
Calcul date php

Est il possible de calculer une date de livraison :
On sait qu'il faut 4 jours pour etre livré, hors samedi et dimanches.

Le resultats donnerais :

Date de livraison prévue : le xx/xx/20xx
xx/xx/20xx = date aujourd'hui + 4 jours sauf samedi dimanche

J'ai trouvé des script de calcul de dates en php, ou on peut facilement rajouter 4 jours, mais il compte les week end, et si le client commande samedi, le calcul des 4 jours commence que lundi !

Merci pour votre aide
A voir également:

8 réponses

Dans mon post précédent je t'ai fait le calcul BOURIN de l'age, sans tenir compte de la date anniversaire, alors voici un calcul plus précis.

On a 20 ans lorsque la date anniversaire est passée.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  <head>
<title>Exercice 6</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

</head>
<body>
<center>
<h2>2004-2005 TSIG1B</h2>


<?php
$tab = file("tsig1b.txt");
?>

<table border = "2px solid black">
<tr>
<td>Nom</td> <td>Prénom</td> <td>Date de Naissance</td><td>Age</td>
</tr>

<?php


for ($i = 0; $i < count($tab); $i++){

$ligne = explode(";",$tab[$i]);

$array_date_naissance=explode("/",$ligne); // si date de naissance sous la forme jj/mm/aaa
	$jour_naiss=$array_date_naissance[0];
	$mois_naiss=$array_date_naissance[1];
	$annee_naiss=$array_date_naissance[2];
	$jour_actu=date('d');
	$mois_actu=date('m');
	$an_actu=date('Y');

	if($mois_naiss==2 AND $jour_naiss==29 AND date('L')==0 ){
		
                     // pour ceux qui sont nés une année bissextile et que l'on est pas une année bissextile
                    // on ramene le jour de naiss à 28 sinon condition $jour_actu >= $jour_naiss ci desoous ne sera jamais remplie
                      $jour_naiss=28;
	}
	if($mois_actu >= $mois_naiss  AND $jour_actu >= $jour_naiss){
		//si la date anniversaire est égale ou dépassée
		$age=$an_actu-$annee_naiss;
	}else{
		$age=$an_actu - $annee_naiss -1;
	}
echo "<tr>";
for ($j = 0; $j < count($ligne); $j++) {
echo "<td>$ligne[$j]</td>";
}
echo "<td>".$age." ans </td>";
echo "</tr>";
}


?>


</table>
</center>
</body>
</html>

1
Une solution:

tu cree un tableau avec en clef le jour de commande et en valeur le delta à rajouter.

exemple $tableau=array("lundi"=>4,"mardi"=>6,"mercredi"=>6, etc...);

ensuite $date_livr=$date_cde+$tableau[date_cde];

Attention pour travailler sur les dates il vaut mieux passer par le timestamp (donc dans ce cas en tenir compte dans le delta)
0
precision complementaire:

dans $tableau[date_cde] le parametre date_cde est le jour de la semaine de la date cde c a d lundi mardi etc,

pour le retrouver depuis la date de commande voir la fonction date(......) de php
par exemple transformer la date de cde en timestamp puis extraire le jour semaine (en anglais) par date("l",timestamp_date_cde) et dans l'array mettre les jours en anglais bien sûr.

Recherche sur Google pour ttes ces fonctions.

Timestamp c'est le nombre de secondes écoulées depuis le 1 ier janvier 1970.

Donc le delta timestamp pour un jour c'est 24 x 3600

J'espère que cette piste te rendra service.
0
Encore moi

Il faut aussi gérer les fériés!

tu peux t'inspirer de cette fonction sur le site

https://codes-sources.commentcamarche.net/

Bye
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
est ce que tu as pu trouver une solution. ?
Si besoin je peux te faire un petit script.
0
bonjouur!
je suis en premiere année de bts ig acctuellement je suis en cours je travail sur php la prof nous a donne un exo c de prendre toute la liste des eleve avec leur nom et prenom et a laide dun calcul on doi trouver leurs age et ca jarrive pas je vous montre mon programme et svp envoyer moi la bonne solution merci davance

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Exercice 6</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

</head>
<body>
<center>
<h2>2004-2005 TSIG1B</h2>


<?php
$tab = file("tsig1b.txt");
?>

<table border = "2px solid black">
<tr>
<td>Nom</td> <td>Prénom</td> <td>Date de Naissance</td><td>Age</td>
</tr>

<?php


for ($i = 0; $i < count($tab); $i++){

$ligne = explode(";",$tab[$i]);
echo "<tr>";
for ($j = 0; $j < count($ligne); $j++) {
echo "<td>$ligne[$j]</td>";
}
echo "<td></td>";
echo "</tr>";
}


?>


</table>






</center>
</body>
</html>
0
Essayes ça:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Exercice 6</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

</head>
<body>
<center>
<h2>2004-2005 TSIG1B</h2>


<?php
$tab = file("tsig1b.txt");
?>

<table border = "2px solid black">
<tr>
<td>Nom</td> <td>Prénom</td> <td>Date de Naissance</td><td>Age</td>
</tr>

<?php


for ($i = 0; $i < count($tab); $i++){

$ligne = explode(";",$tab[$i]);
$array_annee_naiss=explode("/",$ligne[2]);//si annee de naissance sous la forme jj/mm/aaaa
$annee_naissance=$array_annee_naiss[2];
$annee_actuelle=date("Y");
//calcul brut si ne en 1988, on est en 2008  age=20
$age=$annee_actuelle-$annee_naissance;
echo "<tr>";
for ($j = 0; $j < count($ligne); $j++) {
echo "<td>$ligne[$j]</td>";
}
echo "<td>".$age." ans </td>";
echo "</tr>";
}


?>


</table>






</center>
</body>
</html>
0
Bonjour,

Comment on déclare les variables de date pour envoyer à Mysql ?

Merci.

Lolochev
0