Jour d'une date

Soyez le premier à donner votre avis sur cette source.

Snippet vu 18 183 fois - Téléchargée 32 fois

Contenu du snippet

Quel jour de la semaine êtes-vous né ?

Ce script va vous permettre d'obtenir le jour de la semaine en entrant une date. Cette date sera calculée à partir du 1er janvier 1600. Si la demande concerne une date inférieure à celle-ci, le résultat semble être exact et les nombres négatifs n'ont pas l'air de poser de problèmes lors des calculs.
Le calcul sera le suivant :
- déterminer le nombre de jours écoulés depuis le 1er janvier de votre année de naissance
- ajouter à cete valeur le nombre de jours écoulés entre 1600 et votre année de naissance
- calculer le reste de la division de cette somme par 7 pour avoir le numéro du jour de la semaine de 0 (dimanche) à 6 (samedi)
Ce code est tiré du livre "PHP", collection "Codes_en_Stock", édité par CampusPress et écrit par Michel Dreyfus.
J'ai cependant corrigé par rapport au code original quelques erreurs de parenthèses et de fermetures de balises.

Source / Exemple :


Queljour.htm
----------------
<html>
<head>
<title>Quel jour était-ce ?</title>
</head>
<body>
<form action="queljour.php">
<h2>Quel jour tombait cette date ?</h2>
Indiquez la date de l'évènement :<br>
Jour :
<select name="sel_jour">
<option selected>1
<option>2
<option>3
<option>4
<option>5
<option>6
<option>7
<option>8
<option>9
<option>10
<option>11
<option>12
<option>13
<option>14
<option>15
<option>16
<option>17
<option>18
<option>19
<option>20
<option>21
<option>22
<option>23
<option>24
<option>25
<option>26
<option>27
<option>28
<option>29
<option>30
<option>31
</select>
Mois :
<select name="sel_mois">
<option value=1>Janvier
<option value=2>Février
<option value=3>Mars
<option value=4>Avril
<option value=5>Mai
<option value=6>Juin
<option value=7>Juillet
<option value=8>Août
<option value=9>Septembre
<option value=10>Octobre
<option value=11>Novembre
<option value=12>Décembre
</select>
De quelle année :
<input type="text" name="annee" size=4>
<br>
<input type="submit" value="Pour savoir">
</form>
</body>
</html>

Ici les deux listes permettent de sélectionner le jour et le mois alors que la boite de saisie reçoit l'année. Le bouton "Pour savoir" appelle le script.

Queljour.php
----------------
<?php

function bissex($an){
	if(($an % 4 == 0) && ($an % 100 != 0) || ($an % 400 == 0)){
	return 1;
	}else{
	return 0;
	}
}

function joursem($an, $mois, $jour){
$nb_jours = array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

	if ($jour > $nb_jours[$mois - 1] + bissex($an)){
	print "<h3>Dans le mois choisi, il y a moins de $jour jours !</h3>";
	return -1;
	}

	if (mktime(1,0,0,1,1,$an) == -1){
	$jours_total = $jour;
		if ($mois > 1){
			for ($i=$mois-2; $i>=0; $i--){
			$jours_total += $nb_jours[$i];
			if ($i == 1) $jours_total += bissex($an);
			}
		}

$jours_total = $jour;
	if ($mois > 1){
		for ($i=$mois-2; $i>=0; $i--){
		$jours_total += $nb_jours[$i];
		if ($i == 1) $jours_total += bissex($an);
		}
	}
$jours_an = 0;
	for ($i=1600; $i<$an; $i++){
	$jours_an += (365 + bissex($i));
	}
$jours_total += $jours_an;
$sem = ($jours_total + 5) % 7; // Le 1/1/1600 était un samedi
}
else{
$sem = (int) date("w", mktime(1,0,0,$mois,$jour,$an));
}
return $sem;
}
//---------------------------
$semaine = array("dimanche", "lundi", "mardi", "mercredi", "jeudi", "vendredi", "samedi");
$jour_de_la_semaine = joursem($annee, $sel_mois, $sel_jour);
if ($jour_de_la_semaine != -1){
echo "<h3>Le $sel_jour/$sel_mois/$annee est un $semaine[$jour_de_la_semaine]</h3>";
}
?>

A voir également

Ajouter un commentaire Commentaires
Messages postés
399
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
6 septembre 2004

effectivement... quand je relis ce code, je le trouve de + en + pourri. Mais bon je faisais du PHP depuis 3 jours à cette époque !!!!
Messages postés
55
Date d'inscription
vendredi 20 octobre 2000
Statut
Membre
Dernière intervention
13 octobre 2008

tu peus déjà optimiser ton code en modifiant ton <select> pour le jour:

<select name="sel_jour">
<?php
for ($i=1; $i<32; $i++)
{echo "<option value=$i></option>";}
?>
</select>
Messages postés
39
Date d'inscription
mardi 3 octobre 2000
Statut
Membre
Dernière intervention
10 juin 2005

Messages postés
399
Date d'inscription
jeudi 31 janvier 2002
Statut
Membre
Dernière intervention
6 septembre 2004

Messages postés
39
Date d'inscription
mardi 3 octobre 2000
Statut
Membre
Dernière intervention
10 juin 2005

Afficher les 7 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.