Rechercher : dans
Par :

Calcul date php

Dernière réponse le 23 jan 2008 à 17:51:15 philias001, le 1 jun 2007 à 13:53:01 
 Signaler ce message aux modérateurs

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

Configuration: Windows XP
Internet Explorer 6.0

Meilleures réponses pour « Calcul date php » dans :
Vérifier le format d'une date en PHP VoirIl existe plusieurs méthodes pour verifier le format d'une date en PHP, vous pouvez par exemple découper la chaîne puis tester les valeurs de chaque élément. Plus simplement nous utiliserons les expressions régulières. Pour valider une date au...

1

Alain42, le 11 jun 2007 à 18:01:22

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)

Répondre à Alain42

2

Alain42, le 11 jun 2007 à 20:31:44

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.

Répondre à Alain42

3

Alain42, le 12 jun 2007 à 12:08:12

Encore moi

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

tu peux t'inspirer de cette fonction sur le site

http://www.phpcs.com/codes/JOURS-OUVRES_38705.aspx

Bye

Répondre à Alain42

4

Alain42, le 14 jun 2007 à 09:54:02

Est ce que tu as pu trouver une solution. ?
Si besoin je peux te faire un petit script.

Répondre à Alain42

5

achille, le 23 jan 2008 à 16:17:59

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>

Répondre à achille

6

Alain42, le 23 jan 2008 à 16:28:54

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>

Répondre à Alain42

7

 Alain42, le 23 jan 2008 à 17:51:15
  • +1

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>

Répondre à Alain42
Collection CommentÇaMarche.net