Jour d'une date

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

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.