Réponse de luce
Le : 19/12/2008 à 23:16:48
Réponse de Maljuna Kris
Le : 20/12/2008 à 09:24:19
<?php
function ouvrables($mois){
$monato=substr($mois,5,2)*1;
$jaro=substr($mois,0,4)*1;
$moisTime=mktime(0,0,0,$monato,1,$jaro);
$nbJoursDuMois=date('t',$moisTime)*1;
$nbOuvrables=0;
$i=1;
while(!($i >$nbJoursDuMois)){
$jour=mktime(0,0,0,$monato,$i++,$jaro);
if (date('N',$jour) < 6){$nbOuvrables++;}
}
return $nbOuvrables;
}
$mois='2008-11-23';
echo $mois,'<br />',ouvrables($mois);
?>
Réponse de Dionysos
Le : 20/12/2008 à 11:26:32
Réponse de Alex
Le : 21/12/2008 à 10:41:17
Réponse de Maljuna Kris
Le : 21/12/2008 à 10:51:28
je voudrais bien quelques commentaires sur ton code. A quoi servent les " *1; " ???
A forcer la numéricité des arguments de mktime(), substr() retournant des caractères.Réponse de Maljuna Kris
Le : 21/12/2008 à 13:44:52
<?php
function ouvrables($mois){
$monato=substr($mois,5,2)*1;
$jaro=substr($mois,0,4)*1;
$moisTime=mktime(0,0,0,$monato,1,$jaro);
$nbJoursDuMois=date('t',$moisTime)*1;
$nbOuvrables=$nbJoursDuMois;
while($nbJoursDuMois > 0){
$jour=mktime(0,0,0,$monato,$nbJoursDuMois--,$jaro);
if (date('N',$jour) > 5){$nbOuvrables--;}
}
return $nbOuvrables;
}
$mois='2008-12-23';
echo $mois,'<br />',ouvrables($mois);
?>
Réponse de Maljuna Kris
Le : 21/12/2008 à 20:16:20
<?php
function ouvrables($mois){
list($jaro,$monato,$tago)=explode('-',$mois);
$jaro*=1;$monato*=1;
if(!checkdate($monato,1,$jaro)){return $mois.' date erronée';}// on se fout du jour
else{
$moisTime=mktime(0,0,0,$monato,1,$jaro);
$nbJoursDuMois=date('t',$moisTime)*1;
$nbOuvrables=$nbJoursDuMois;
while($nbJoursDuMois > 0){
$jour=mktime(0,0,0,$monato,$nbJoursDuMois--,$jaro);
if (date('N',$jour) > 5){$nbOuvrables--;}
}
return $nbOuvrables;
}
}
$mois='2008-11-23';
echo $mois,'<br />',ouvrables($mois);
?>
Réponse de Alex
Le : 21/12/2008 à 22:59:53
if ((substr($mois,4,1) == '-' ) AND (substr($mois,7,1)== '-') {$mois = $mois};
{else $mois = reformatage de date....;}
Réponse de mcAllan
Le : 22/12/2008 à 10:00:06
Réponse de Alex
Le : 22/12/2008 à 10:04:09
<?php
// SERVANT AU CALCUL DES JOURS OUVRABLES
// Fonction retournant le nombre de jour fériés, samedis et dimanches entre 2 dates entrées en timestamp
function jour_ferie($timestampStart, $timestampEnd) {
// Initialisation de la date de début
$jour = date("d", $timestampStart);
$mois = date("m", $timestampStart);
$annee = date("Y", $timestampStart);
$nbFerie = 0;
while ($timestampStart != $timestampEnd) {
// Définition des dates fériées fixes
if($jour == 1 && $mois == 1) $nbFerie++; // 1er janvier
if($jour == 1 && $mois == 5) $nbFerie++; // 1er mai
if($jour == 8 && $mois == 5) $nbFerie++; // 5 mai
if($jour == 14 && $mois == 7) $nbFerie++; // 14 juillet
if($jour == 15 && $mois == 8) $nbFerie++; // 15 aout
if($jour == 1 && $mois == 11) $nbFerie++; // 1 novembre
if($jour == 11 && $mois == 11) $nbFerie++; // 11 novembre
if($jour == 25 && $mois == 12) $nbFerie++; // 25 décembre
// Calcul du jour de pâques
$date_paques = easter_date($annee);
$jour_paques = date("d", $date_paques);
$mois_paques = date("m", $date_paques);
if($jour_paques == $jour && $mois_paques == $mois) $nbFerie++;
// Pâques
// Calcul du jour de l ascension (38 jours après Paques)
$date_ascension = mktime(date("H", $date_paques),
date("i", $date_paques),
date("s", $date_paques),
date("m", $date_paques),
date("d", $date_paques) + 38,
date("Y", $date_paques)
);
$jour_ascension = date("d", $date_ascension);
$mois_ascension = date("m", $date_ascension);
if($jour_ascension == $jour && $mois_ascension == $mois) $nbFerie++;
//Ascension
// Calcul de Pentecôte (11 jours après Paques)
$date_pentecote = mktime(date("H", $date_ascension),
date("i", $date_ascension),
date("s", $date_ascension),
date("m", $date_ascension),
date("d", $date_ascension) + 11,
date("Y", $date_ascension)
);
$jour_pentecote = date("d", $date_pentecote);
$mois_pentecote = date("m", $date_pentecote);
if($jour_pentecote == $jour && $mois_pentecote == $mois) $nbFerie++;
//Pentecote
// Calul des samedis et dimanches
$jour_julien = unixtojd($timestampStart);
$jour_semaine = jddayofweek($jour_julien, 0);
if($jour_semaine == 0 || $jour_semaine == 6) $nbFerie++;
//Samedi (6) et dimanche (0)
// Incrémentation du nombre de jour ( on avance dans la boucle)
$jour++;
$timestampStart=mktime(0,0,0,$mois,$jour,$annee);
}
return $nbFerie;
}//Fin de la fonction
?>
Réponse de Maljuna Kris
Le : 22/12/2008 à 10:51:49
Réponse de Alex
Le : 22/12/2008 à 11:02:52
Réponse de mcAllan
Le : 22/12/2008 à 11:16:14
Réponse de Alex
Le : 22/12/2008 à 11:25:37
Réponse de Alex
Le : 22/12/2008 à 14:54:59
Réponse de Alex
Le : 22/12/2008 à 14:58:32
Réponse de Maljuna Kris
Le : 22/12/2008 à 15:40:42
Réponse de mcAllan
Le : 23/12/2008 à 10:37:32
Réponse de mcAllan
Le : 23/12/2008 à 10:40:02
<?php
function getFeries($timestampStart, $timestampEnd){
$anDebut = date('Y',$timestampStart);
$anFin = date('Y',$timestampStart);
$tabFeries = array();
for($a=$anDebut; $a<=$anFin; $a++){
$tabFeries[] = mktime(0,0,0,1,1,$a); // jour de l'an
$tabFeries[] = mktime(0,0,0,5,1,$a); // 1 mai
$tabFeries[] = mktime(0,0,0,5,8,$a); // 8 mai
$tabFeries[] = mktime(0,0,0,7,14,$a); // 14 juillet
$tabFeries[] = mktime(0,0,0,8,15,$a); // 15 aout
$tabFeries[] = mktime(0,0,0,11,1,$a); // 1 novembre
$tabFeries[] = mktime(0,0,0,11,11,$a); // 11 novembre
$tabFeries[] = mktime(0,0,0,12,25,$a); // 25 décembre
$paques = easter_date($a);
$tabFeries[] = mktime(0,0,0,date('m',$paques),date('d',$paques)+1,$a); // lundi de paques
$tabFeries[] = mktime(0,0,0,date('m',$paques),date('d',$paques)+39,$a); // ascension
$tabFeries[] = mktime(0,0,0,date('m',$paques),date('d',$paques)+50,$a); // pentecote
}
return $tabFeries;
}
function jour_ferie($timestampStart, $timestampEnd) {
$nbFerie = 0;
// Récup des jours fériés de la periode
$listFeries = getFeries($timestampStart, $timestampEnd);
while ($timestampStart <= $timestampEnd) {
// par défault c'est ouvré
$isFerie = false;
// est-ce un jour ferié ?
if(in_array($timestampStart,$listFeries)) $isFerie = true;
// est-ce un samedi ou dimanche ?
if (date('N',$timestampStart) > 5) $isFerie = true;
// donc :
if($isFerie){
$nbFerie ++;
// vérification optionnelle :
echo date('D d-m-Y', $timestampStart), '<br />';
}
// + 1 jour
$timestampStart = mktime(0,0,0,date('m',$timestampStart),date('d',$timestampStart)+1,date('Y',$timestampStart));
}
return $nbFerie;
}
?>
Réponse de Maljuna Kris
Le : 23/12/2008 à 10:56:52
Réponse de mcAllan
Le : 23/12/2008 à 12:05:39
Réponse de Alex
Le : 23/12/2008 à 16:19:35
Réponse de mcAllan
Le : 23/12/2008 à 19:33:48
Réponse de Dionysos
Le : 23/12/2008 à 20:33:28
Vous voici donc prêt à poster sur les forums de PHPDébutant. Avant toute chose, merci de prendre le temps de lire les quelques lignes qui suivent.
Attention, à partir du moment ou vous postez dans les forums, vous
acceptez la présente charte. Si votre message est modéré ou supprimé,
vous ne pourrez pas dire que vous n'étiez pas au courant des règles !
Avec tout ces conseils vous augmenterez les chances de réponse, leur pertinence et leur rapidité
Voilà, ça sera tout, bonne écriture :)