begin process at 2012 02 15 06:04:36
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Date / Heure

 > CALCUL ANNÉES BISSEXTILES

CALCUL ANNÉES BISSEXTILES


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Date / Heure Classé sous :date, bissextile Niveau :Débutant Date de création :15/12/2006 Date de mise à jour :16/12/2006 20:47:39 Vu / téléchargé :30 736 / 147

Auteur : pilou92

Ecrire un message privé
Commentaire sur cette source (39)
Ajouter un commentaire et/ou une note

 Description

fonction simple permettant de calculer les années bissextiles et facile à intégrer dans un script !

Source

  • <?php
  • /*
  • Une année est bissextile si :
  • 1. l'année est divisible par 4 mais non divisible par 100
  • 2. l'années divisible par 400
  • Ce calcul est exacte à compter du 15 octobre 1582, date de la réforme grégorienne
  • (passage du calendier julien au calendrier grégorien).
  • réf : http://www.imcce.fr/fr/actualites/archive.php?id=38
  • A partir de ces conditions on a juste à vérifier si les conditions 1 & 2
  • renvoient un entier (integer).
  • /*
  • /*
  • fonction : bissextile
  • */
  • function bissextile($annee) {
  • if( (is_int($annee/4) && !is_int($annee/100)) || is_int($annee/400)) {
  • // Année bissextile
  • // vous remplacez le retour par ce que vou voulez
  • return TRUE;
  • } else {
  • // Année NON bissextile
  • // vous remplacez le retour par ce que vou voulez
  • return FALSE;
  • }
  • }
  • /******************************************************
  • Exemple 1 : Tableau des années depuis 1582
  • */
  • $aa = 1582;
  • echo '<font color="#CC0000">Tableau des années bissextiles depuis ' . $aa . '</font><br>';
  • for($aa; $aa<=date('Y'); $aa++) {
  • if(bissextile($aa)) {
  • echo '<strong>' . $aa . ' : Bissextile</strong><br>';
  • } else {
  • echo $aa . ' : Non bissextile<br>';
  • }
  • }
  • /******************************************************
  • Exemple 2 : somme nous dans une année bissextile ?
  • */
  • echo '<hr/><font color="#CC0000">' . date('Y') . ' ';
  • echo bissextile(date('Y')) ? 'est' : 'n\'est pas';
  • echo ' bissextile.';
  • ?>
<?php
/*
Une année est bissextile si :
	1. l'année est divisible par 4 mais non divisible par 100
	2. l'années divisible par 400

Ce calcul est exacte à compter du 15 octobre 1582, date de la réforme grégorienne
(passage du calendier julien au calendrier grégorien).
réf : http://www.imcce.fr/fr/actualites/archive.php?id=38

A partir de ces conditions on a juste à vérifier si les conditions 1 & 2
renvoient un entier (integer).
/*


/*
fonction : bissextile
*/
function bissextile($annee) {
	if( (is_int($annee/4) && !is_int($annee/100)) || is_int($annee/400)) {
		// Année bissextile
		// vous remplacez le retour par ce que vou voulez
		return TRUE;
	} else {
		// Année NON bissextile
		// vous remplacez le retour par ce que vou voulez
		return FALSE;
	}
}


/******************************************************
Exemple 1 : Tableau des années depuis 1582
*/

$aa = 1582;

echo '<font color="#CC0000">Tableau des années bissextiles depuis ' . $aa . '</font><br>';

for($aa; $aa<=date('Y'); $aa++) {
	if(bissextile($aa)) {
		echo '<strong>' . $aa . ' : Bissextile</strong><br>';
	} else {
		echo $aa . ' : Non bissextile<br>';
	}
}

/******************************************************
Exemple 2 : somme nous dans une année bissextile ?
*/

echo '<hr/><font color="#CC0000">' . date('Y') . ' ';
echo bissextile(date('Y')) ? 'est' : 'n\'est pas';
echo ' bissextile.';

?>


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

15 décembre 2006 18:45:42 :
suite aux commentaires ajout des miens
15 décembre 2006 18:47:18 :
v1.1
16 décembre 2006 20:47:39 :
mise en page de la source

 Sources de la même categorie

Source avec une capture AGENDA GRAPHIQUE SIMPLE (DÉBUTANT) À INTÉGRER par NicomakM
CALCUL DU NOMBRE DE JOURS CONTENUS DANS L'INTERSECTION DE DE... par curphey
CALENDRIER EN 70 LIGNES par tchconst
Source avec Zip CALENDRIER par gabay
CALENDRIER SIMPLE par manuche

 Sources en rapport avec celle ci

CALCUL DU NOMBRE DE JOURS CONTENUS DANS L'INTERSECTION DE DE... par curphey
CALENDRIER SIMPLE par manuche
Source avec Zip VOTRE SIGNE ASTROLOGIQUE par zulrigh
Source avec Zip VOTRE SIGNE ASTROLOGIQUE CHINOIS par zulrigh
FORMATER DES MILLISECONDES AU FORMAT HH:MM:SS:MMM par lcef

Commentaires et avis

Commentaire de coucou747 le 15/12/2006 15:25:37 administrateur CS

pour un code aussi court, t'aurais pu afficher le code...

tu devrais remplacer tes " par des '

Commentaire de rrk275 le 15/12/2006 17:46:42

2/3 ptites choses .. un code comme ca a t il sa place ?
pourquoi faire une fonction que tu ne reutilise pas pour faire le tableau ?
moi je fais dans le synthetyique mais
function bissextile($annee) {
if( (is_int($annee/4) && !is_int($annee/100)) || is_int($annee/400)) {
return TRUE;
} else {
return FALSE;
}
}
c'est pleonasmique ..

Louis

Commentaire de pilou92 le 15/12/2006 18:38:11

rrk275 > L'avantage d'une fonction même courte, c'est justement de pouvoir l'utiliser comme un "objet" dans d'autres scripts. L'intéret n'est pas tant dans la construction du tableau, qui ne sert à rien pour controler ce qu'a saisi l'utilisateur, mais c'est de pouvoir vérifier si une année est bissextile en 1 ligne de code, en appelant la fonction : bissextile($annee). Elle peut etre utiliser par exemple avec ajax. Après chacun l'adapte à ses besoins (ex : a la place de TRUE du peut renvoyer 29 et de FALSE 28)

De plus, j'ai beaucoup vu de scripts de calcul d'années bissextiles écrits comme ça : if( (aa/4=0 && aa/100!=0) || aa/400=0 )
Or, cette condition est fausse et peut retouner des erreurs.

Commentaire de coucou747 le 15/12/2006 18:40:51 administrateur CS

"L'avantage d'une fonction même courte, c'est justement de pouvoir l'utiliser comme un "objet""

euh.... détaille stp... j'ai peur de mal comprendre...

Commentaire de pilou92 le 15/12/2006 19:02:40

coucou74 > ce que je voulais dire par là, c'est que cette fonction peut être ajouter à une class et juste vérifié si la condition est vrai ou pas ... je me suis mal exprimé.

Commentaire de coucou747 le 15/12/2006 19:16:55 administrateur CS

une fonction comme ça, dans une classe ??? euh... désolé, mais je penses que non... une fonction comme ça, ça ne traite pas un objet, ni un type, sauf si tu fais une classe date... mais là, ça va pas être bon, car il ne pourra pas traiter des résultats de mysql facilement... bref, une classe date n'est pas une bonne idée, et donc, cette fonction n'a rien à faire dans un objet...

Mais la laisser sous forme de fonction, moi je trouves ça bien

Commentaire de malalam le 15/12/2006 19:47:41 administrateur CS

Hello,

je suis plutôt contre les codes très courts dans cette section de CS, mais là...je pense que ça servira à certains. Donc oui, je pense qu'elle peut rester. Même si, je le répête...généralement, je n'accepte pas de code aussi court.
Evidemment, je préfèrerais la voir dans les snippets (http://www.codyx.org).

Je suis d'accord avec RRK275 pour ce qui concerne l'exemple : tu devrais utiliser ta fonction, tant qu'à faire.

Je ne suis pas d'accord avec Coucou, de telles fonctions peuvent très bien devenir des méthodes. Moi, j'ai des méthodes calculant des bornes de date, des delta, des délais, les jours ouvrés, etc...dans certains objets. Quand on fait une appli logistique, par exemple...Le tout est de structurer correctement ton modèle pour qu'il ne soit pas incohérent. Mais une classe (ou plusieurs) gérant ce genre de trucs me parait tout à fait viable.
T'es pas obligé de gérer 'est ce bien une année ? comment est-elle formattée? etc...' dans cette méthode précisément. Et à dire vrai, je pense même que ce n'est pas à une telle méthode de gérer ça. Une date est formattée, puis on l'utilise. Pas l'inverse : on l'utilise, mais on la formatte en même temps histoire de...

Mais bon, ça reste une question de point de vue et de façon de coder, après tout :-)

Commentaire de rrk275 le 15/12/2006 21:39:19

J'ai l'impression de mettre mal exprimé, et je m'en excuse si tu t'es senti attaqué ... je vais donc essayer de rattraper mes propos.

"pourquoi faire une fonction que tu ne reutilise pas pour faire le tableau ?"
Je voulais juste signaler que tant qu'a faire .. pourquoi ne pas l'utiliser.

"moi je fais dans le synthetyique mais
function bissextile($annee) {
if( (is_int($annee/4) && !is_int($annee/100)) || is_int($annee/400)) {
return TRUE;
} else {
return FALSE;
}
}
c'est pleonasmique .."
Je signalais que faire du
if(test)
return true;
else
return false;

c'était pleonasmique et que ca revenait à cela :

return test;// question de gout mais c'est aussi simple..

et puis je n'oserais pas remettre en cause un code que j'ai moi même programmer de maniere similaire dans le cadre de prologin ( .. un peu simple .. certes  ^^ )

Louis

Commentaire de coucou747 le 16/12/2006 10:27:41 administrateur CS

quand tu fais du php, une date n'a aucune raison d'être un objet... c'est bien plus facile de la manipuler en tant que chaine ou que timestamp... pour un vrai soft, quand ton objet persiste, oui... pourquoi pas, mais là, non

Commentaire de Kirua le 16/12/2006 12:27:19

utiliser ajax et un script php pour déterminer si une année est bissextile sans recharger la page? la technologie vous tuera: on peut faire ça en javascript normal depuis dix ans!

Commentaire de sheorogath le 16/12/2006 12:42:49 administrateur CS

ca aurait ete bien que ce code gere les annees inferieur a 1584...

Commentaire de pilou92 le 16/12/2006 17:54:55

RRK275 > Non du tout, d'ailleur tu as raison sur le fait que j'aurai du utiliser la fonction pour illustrer l'exemple. Je vai refaire la source plus proprement.

coucou747 > je ne suis pas d'accord avec toi, tout dépend de la finalité de ton appli. Actuellement, je developpe un site astro pour un client, d'où la proposition de ce script, et je peux t'assurer que ça m'est tres utile.

sheorogath > Je pense que c'est faisable, c'est juste un problème de calendrier.

Commentaire de rrk275 le 16/12/2006 18:03:54

if($annee<1584)
return false;

et voila ^^

Louis

Commentaire de kankrelune le 18/12/2006 11:10:25

Euuuuh... .. .

function bissextile($annee)
{
    return ((is_int($annee/4) && !is_int($annee/100)) || is_int($annee/400));
}

C'est plus simple sans if()... non... .. ?

@ tchaOo°

Commentaire de rrk275 le 18/12/2006 11:40:24

Oula me suis relu .. et je revois mon code ..
if($annee<1584)
   return is_int($annee/4);

kankrelune, bonne réaction mais deja dit ^^

Louis

Commentaire de Kirua le 18/12/2006 12:10:19

pour tester si un nombre est divisible par un autre, vaut mieux calculer le reste de la division avec l'opérateur modulo:

if($n % $m == 0) { /* n est un multiple de m */ }

Commentaire de Skreo le 18/12/2006 23:22:06

Ouép, perso je fais comme ça :

function bissextile($annee){
  return ($annee%4==0 && $annee%100!=0) || $annee%400==0;
}

J'allais dire la même chose que kankrelune, c'est plus simple sans if ^^ Et le fait d'utiliser le % (pour calculer le reste) est plus propre

Commentaire de coucou747 le 19/12/2006 13:09:48 administrateur CS

puisque vous débatez sur une poussière de propreté, alors un === vaut mieux qu'un == et un !== vaut mieux qu'un !=

Commentaire de Kirua le 19/12/2006 15:10:46

Ça c'est pour des comparaisons spéciales en PHP pour lever certaines ambiguïtés il me semble, ça ne s'applique pas ici, si? Le PHP, ça fait lgtps pour moi ...

Commentaire de kankrelune le 19/12/2006 15:16:40

Si ça peut très bien s'appliquer ici... d'une manière générale mieux vaut utiliser la comparaison typée comme le suggère coucou747 c'est plus rapide à l'éxécution... sauf dans certains cas ou une comparaison non typée s'impose... .. .

@ tchaOo°

Commentaire de malalam le 19/12/2006 15:18:19 administrateur CS

La comparaison typée est quand même plus rapide; et puis, on attend un 0 de type entier, pas un 0 de type booléen par exemple...c'est plus strict, et donc c'est une bonne habitude à prendre, Coucou a raison. Même si il y a peu de chance que l'opérateur modulo renvoie autre chose qu'un entier, on est d'accord.

Commentaire de malalam le 19/12/2006 15:19:13 administrateur CS

Grilled ;-)

Commentaire de coucou747 le 19/12/2006 18:36:56 administrateur CS

:) Kirua, t'as encore de la marge sur moi en C et Cpp, mais depuis que tu m'as tourné vers le php, je penses que j'ai fais beaucoup de progrès :) Allez, je vais retourner m'entrainer pour prologin :)

Commentaire de sheorogath le 19/12/2006 19:06:01 administrateur CS

mdr t'en est ou des preselection ?
perso je les ai fini je vais bientot renvoyer le truc

Commentaire de rrk275 le 19/12/2006 22:22:24

D'ailleur ce code permettrait de passer une des épreuves ..


"je vais retourner m'entrainer pour prologin :) "
lol

euh, sheorogath, etait tu l'année derniere à prologin?

Commentaire de sheorogath le 19/12/2006 22:24:29 administrateur CS

non trop blaze je l'i decouvert que cette annee

ca a l'air trop enorme en plus !!!
j'espere arrive au moins jusqu'au demis ...

mais j'ai le dernier qui bouffe un peu de ram ...

Commentaire de rrk275 le 19/12/2006 22:31:25

Euh l'année derniere j'esperais au moins aller en demi  je suis allé en finale. Faut savoir que le niveau n'est pas hyper exigeant et si tu veux vraiment t'entrainer je te conseille le site France ioi.

Moi je passe tous les tests du dernier ( du 2eme coup je l'avoue .. )  ^^ et comme dit dans je sais plus où tu as toutes les chances d'être pris sans cela.

bonne chance ..

Commentaire de sheorogath le 19/12/2006 22:33:23 administrateur CS

france ioi ? je regarde
en attendant ta un lien stp ?

finale ? putain le reve pour moi meme si j'ai mon bac pas longtemps apres :s

Commentaire de sheorogath le 19/12/2006 22:33:54 administrateur CS

c'est bon je l'ai le site

Commentaire de sheorogath le 19/12/2006 22:39:18 administrateur CS

je connaissais pas ce site ...

j'irais faire quelques tour de temps en temps pour faire un pb par ci par la
en tout ils sont assez interressant

mais les enonces par toujours clair lol

Commentaire de coucou747 le 20/12/2006 12:49:39 administrateur CS

rrk275, finale toi aussi, c'est quoi ton classement ? (par curiosité :) ) moi aussi, j'y étais, j'ai pas été super bien classé, mais bon, c'est déjà ça...

Commentaire de rrk275 le 20/12/2006 12:53:10

rrk275, finale toi aussi ( tu dois pas te souvenir mais on a joué ensemble à la finale ( warcraft? )  .. )
classement euh .. 63 ... ferais mieu l'année prochaine ^^

Commentaire de sheorogath le 20/12/2006 14:02:40 administrateur CS

lol vous etes sur d'etre pris a nouveau ? :p

Commentaire de rrk275 le 20/12/2006 14:17:52

Sur , nan .. mais j'ai tellement progressé depuis l'année derniere en algorithmique notamment sur france ioi que j'ai de grandes chances d'être repris ^^
Louis

Commentaire de sheorogath le 20/12/2006 14:23:16 administrateur CS

bon ben alors des que j'ai un peu de temps je vais voir ce site ,, france ioi il a l'air pas mal du tout

je pense quand meme etre pris en demis final

juste une question ta validé le dernier programme ?

Commentaire de rrk275 le 20/12/2006 14:27:07

J'ai validé tous les programmes ...

Louis

Commentaire de sheorogath le 20/12/2006 14:28:11 administrateur CS

putain me manque le dernier il prend trop de ram lol
tant pis

Commentaire de kankrelune le 20/12/2006 14:50:13

Bel exemple de off topic... vous pouvez pas en discuter sur le forum... ça évitera à tout le monde de recevoir des mails pour rien... et au serveur d'en envoyer par la même... merci... .. .

@ tchaOo°

Commentaire de mikadom le 26/11/2008 15:48:24 9/10

Code bien pratique merci

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Tri de fichiers par date [ par Clem ] Comment trier dans l'orde du plus nouveau au plus vieux, des dossiers ?J'ai trouvé pour afficher les dossiers :&lt;?$rep=opendir('.');while ($file = r Comparer des dates [ par Blondy ] Je voudrais comparer des dates pour savoir quel fichier est le plus vieux... Mais lorsque je crée une date avec date("dmy"); par exemple, ça me crée q Comparaison de date [ par benett ] J'essaie de créer un site CDThèque et j'ai un gros problème : J'explique :Comment puis-je faire à partir de deux dates (La date de visite du site et l prob. pour des date ex. [ par LeRoux ] Je souhaite afficher les 5 articles les + récents d'une base de données se nommant articles, comment faire? Comparaison de date [ par benett ] Bonjour à tous,Comment peut-on comparer 2 dates et extraire la différences en jours.Ces 2 dates sont encodées via un formulaire au format aaaa/aa/aa.C formater une date [ par Stephane ] salutj'ai un gros pb que j'arrive pas a resoudre.j'ai une date dans une variable du type "2002/05/08", je voudrai arriver par quelque moyen que ce soi Convertir une Date au format Timestamp [ par Touf ] Salut !J'ai un petit pb : j'accède à une Date stockée dans une bdd mysql sous la forme (timestamp) "YmdHis" : 20020608105031J'aimerais l'afficher sous Date probleme [ par g0belin ] Ben voila en fait je veux faire un agenda...je veux afficher seulement les entree dans la base pour le jour courant...MAIS sa marche PASsa m'affiche t RE probleme DATE [ par g0belin ] Se que je veux faire c'est afficher les enregistrement qui ont la date du jours courant...Mais je n'y arrive pasPour cela j'ai un champs date(type:dat Date probleme [ par g0belin ] comment faire pour incrementer une date de x jours???je voulais faire dans le style mais sa marche pas!!!date("d-m-Y")+1;


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 3,229 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales