perruche1
Messages postés4Date d'inscriptionsamedi 23 février 2013StatutMembreDernière intervention23 février 2013 28 sept. 2010 à 07:57
Bonjour,
Etant plus (ou moins) que nul en programmation php, je voudrai avoir un formulaire sur mon site ou une personne rentre une date (ou, à défaut qui affiche la date actuelle), et qui calcule et montre automatiquement cette date + 18 jours. Je comprends que cela vous semble un peu bizarre ; c'est simplement dans le cadre d'élevage d'oiseaux, pour prédire la date d'éclosion en fonction de la date de ponte d'un oeuf...
Un grand merci d'avance pour celui ou ceux qui veulent m'aider
questre78
Messages postés2Date d'inscriptionjeudi 25 janvier 2007StatutMembreDernière intervention22 février 2010 22 févr. 2010 à 10:11
salut moi j'utilise cette fonction (une période sur deux ans ou un an )
function generate_Period($planification=array('year1'=>'', 'month1'=>'', 'day1'=>'', 'year2'=>'', 'month2'=>'','day2'=>'','day_of_cours'=>''))
{
Waredan
Messages postés22Date d'inscriptionvendredi 8 janvier 2010StatutMembreDernière intervention19 février 2010 19 févr. 2010 à 12:59
Y-m-d, cela va de soi ..
Waredan
Messages postés22Date d'inscriptionvendredi 8 janvier 2010StatutMembreDernière intervention19 février 2010 19 févr. 2010 à 12:59
Tu as lu les commentaires précédents ? Si tu veux utiliser un format différent, je te conseille de reprendre ma fonction donnée en commentaire #1 .. remplace "d/m/Y" par "Y-d-d" ..
cs_nashouille
Messages postés21Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention11 juillet 2008 19 févr. 2010 à 12:39
je viens de testé ta fonction directement avec une extraction MySQL.
Le champs que je test est de type date et non datetime comme tu le précise.
et voici ce qui en ressort avec ce test:
$Liste_Date=liste_jours('2010-12-01','2010-12-15');
for($i = 0; $i < count($Liste_Date); $i++)
echo $Liste_Date[$i]."
";
une boucle du 2010-12-01 au 2024-11-30
merci
Waredan
Messages postés22Date d'inscriptionvendredi 8 janvier 2010StatutMembreDernière intervention19 février 2010 19 févr. 2010 à 12:13
C'est pas trop le sujet qui est en question ici ...
<?php
// Dans ta base de donnée, tu as un champ nommé "date", de type "datetime".
// Supposant que "$date" provient de ce champ...
$date = '2010-02-16 11:40:00';
$date = date_create($date);
echo $date->format('Y-m-d');
?>
cs_nashouille
Messages postés21Date d'inscriptionmardi 16 mars 2004StatutMembreDernière intervention11 juillet 2008 19 févr. 2010 à 12:03
salut
Comment fait-on avec les extractions de date MySQL au format yyyy-mm-dd ?
merci
DevilTN
Messages postés8Date d'inscriptionmardi 4 mars 2008StatutMembreDernière intervention17 avril 2010 17 févr. 2010 à 16:50
Concernant la prise en charge du TimeZone
J’utilise souvent cette fonction :
function Convert_time_to_US($DateCH)
{
$dateTime=date_create($DateCH,timezone_open('Europe/Zurich'));
$DateTimeZone=timezone_open('America/Los_Angeles');
date_timezone_set($dateTime,$DateTimeZone);
return(date_format($dateTime,"Y-m-d H:i:s"));
}
Tu peux simplement la modifier :)
Waredan
Messages postés22Date d'inscriptionvendredi 8 janvier 2010StatutMembreDernière intervention19 février 2010 17 févr. 2010 à 16:25
Salut, voici le même avec prise en charge du timezone et du format d'affichage souhaité, PHP 5 >= 5.2.0 requis.
28 sept. 2010 à 07:57
Etant plus (ou moins) que nul en programmation php, je voudrai avoir un formulaire sur mon site ou une personne rentre une date (ou, à défaut qui affiche la date actuelle), et qui calcule et montre automatiquement cette date + 18 jours. Je comprends que cela vous semble un peu bizarre ; c'est simplement dans le cadre d'élevage d'oiseaux, pour prédire la date d'éclosion en fonction de la date de ponte d'un oeuf...
Un grand merci d'avance pour celui ou ceux qui veulent m'aider
22 févr. 2010 à 10:11
function generate_Period($planification=array('year1'=>'', 'month1'=>'', 'day1'=>'', 'year2'=>'', 'month2'=>'','day2'=>'','day_of_cours'=>''))
{
$annee =$planification['year1'];
$premiermois =$planification['month1'];
$premierjour =$planification['day1'];
$anneeF =$planification['year2'];
$derniermois =$planification['month2'];
$deuxiemejour =$planification['day2'];
$day =$planification['day_of_cours'];
$planification="planification";
if (!isset ($derniermois)){$derniermois=12;}
if (!isset ($premiermois)){$premiermois=1;}
$day_in_french=array('Sun'=>'Dim', 'Mon'=>'Lun', 'Tue'=>'Mar', 'Wed'=>'Mer', 'Thu'=>'Jeu', 'Fri'=>'Ven', 'Sat'=>'Sam');
print " <tr> \n";
$k=0;
if ($annee==$anneeF && $premiermois<=$derniermois)
{
if ($premiermois==$derniermois && $premierjour>$deuxiemejour)
{
return "erreur";
}
$moisfinannee=$derniermois;
}
else
{
$moisfinannee=12;
}
for($indexmois=$premiermois;$indexmois<=$moisfinannee;$indexmois++)
{
$nbrJourduMois[$annee][$indexmois]=Date("t", mktime(0, 0, 0, $indexmois,1, $annee));
$month=Date("m", mktime(0, 0, 0, $indexmois,1, $annee));
for($indexjour=$premierjour;$indexjour<$nbrJourduMois[$annee][$indexmois];$indexjour++)
{
//(Date("w", mktime(0, 0, 0, $indexmois,$indexjour, $annee))==$day) ?$k++:print"";
if (Date("w", mktime(0, 0, 0, $indexmois,$indexjour, $annee))==$day)
{
$k++;
print '<td>'.$day_in_french[date("D", mktime(0, 0, 0, $month,$indexjour, $annee))]." ".date("d/m/Y", mktime(0, 0, 0, $month,$indexjour, $annee))."</td>\n";
if ($k%4==0)
{
print "</tr><tr>\n";
}
}
}
}
if ($anneeF>$annee)
{
for($indexmois1=1;$indexmois1<=$derniermois;$indexmois1++)
{
$nbrJourduMois[$anneeF][$indexmois1]=Date("t", mktime(0, 0, 0, $indexmois1,1, $anneeF));
$month=Date("m", mktime(0, 0, 0, $indexmois1,1, $anneeF));
for($indexjour1=1;$indexjour1<$nbrJourduMois[$anneeF][$indexmois1];$indexjour1++)
{
if (Date("w", mktime(0, 0, 0, $indexmois1,$indexjour1, $anneeF))==$day)
{
$k++;
print '<td>'.$day_in_french[date("D", mktime(0, 0, 0, $month,$indexjour1, $anneeF))]." ".date("d/m/Y", mktime(0, 0, 0, $month,$indexjour1, $anneeF))."</td>\n";
if ($k%4==0)
{
print "</tr><tr>\n";
}
}
}
}
}
print " </tr>";
}
19 févr. 2010 à 17:26
<?php
date_default_timezone_set('Europe/Paris');
function liste_jours($date_debut, $date_fin) {
$date_suite = array($date_debut, $date_fin);
foreach($date_suite as $key => $value){
if(!($date = date_create($value)))
return false;
list($annee, $mois, $jour) = explode("-", date_format($date,'Y-m-d'));
$date_suite[$key] = mktime(0,0,0, $mois, $jour, $annee);
}
$nbrJours = (int)(($date_suite[1]-$date_suite[0])/86400);
for($i = 0; $i <= $nbrJours; $i++)
$date_suite[$i] = date('Y-m-d', strtotime("+$i day ".$date_debut));
return $date_suite;
}
?>
19 févr. 2010 à 12:59
19 févr. 2010 à 12:59
19 févr. 2010 à 12:39
Le champs que je test est de type date et non datetime comme tu le précise.
et voici ce qui en ressort avec ce test:
$Liste_Date=liste_jours('2010-12-01','2010-12-15');
for($i = 0; $i < count($Liste_Date); $i++)
echo $Liste_Date[$i]."
";
une boucle du 2010-12-01 au 2024-11-30
merci
19 févr. 2010 à 12:13
<?php
// Dans ta base de donnée, tu as un champ nommé "date", de type "datetime".
// Supposant que "$date" provient de ce champ...
$date = '2010-02-16 11:40:00';
$date = date_create($date);
echo $date->format('Y-m-d');
?>
19 févr. 2010 à 12:03
Comment fait-on avec les extractions de date MySQL au format yyyy-mm-dd ?
merci
17 févr. 2010 à 16:50
J’utilise souvent cette fonction :
function Convert_time_to_US($DateCH)
{
$dateTime=date_create($DateCH,timezone_open('Europe/Zurich'));
$DateTimeZone=timezone_open('America/Los_Angeles');
date_timezone_set($dateTime,$DateTimeZone);
return(date_format($dateTime,"Y-m-d H:i:s"));
}
Tu peux simplement la modifier :)
17 févr. 2010 à 16:25
<?php
date_default_timezone_set('Europe/Paris');
function liste_jours($deb, $fin = 'now') {
$dt = date_create($deb);
$diff = $dt->diff(date_create($fin));
$arr = array();
for ($i = 0; $i < $diff->d; $i++)
$arr[] = clone $dt->modify('+' . $i . ' day');
return $arr;
}
foreach (liste_jours('01-12-2010', '15-12-2010') as $dt)
echo $dt->format('d/m/Y') . PHP_EOL;
?>