IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Dates] Comment gérer les dates sur un blog ?


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut [Dates] Comment gérer les dates sur un blog ?
    Bonjour,

    Je vais bientot me lancer dans la création d'un système de weblog sur mon site et vu d'ici, il y a déjà une question qui m'interpelle :

    Comment fait-on pour gérer un calendrier comme ceux que l'on voit sur les blogs ? Sachant que tous les 4 ans, il y a un jour en plus ou en moins, si je me souviens bien de mes classiques.
    On fait quand même pas un truc du genre 4 calendrier qui s'affichent selon l'année, en faisant un switch sur les années ?

    ==> En posant cette question, je la trouve un peu tâche. Mais n'empêche que c'est pas totalement clair.

  2. #2
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Si ton probleme c'est les annees bisextile et si je me souviens bien
    une année bisextile est une année multiple de 4 et pas de 100 dans il te faut juster tester cela et tu peux ainsi savoir s'il y a 29 ou 28 jours en février.


    edit :
    sinon pour un prog j'utilise cette fonction pour connaitre le nombre de jour d'un mois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    function getNbJour($annee,$mois)
    {
    	if (strlen($annee) == 1)
    	{
    		$annee = "0" . $annee;
    	}
    	$annee = "20".$annee;
    	if (strlen($mois) == 1)
    	{
    		$mois = "0" . $mois;
    	}
     
    	$nbJ = date("t",mktime(0,0,0,$mois,1,$annee));
    	return $nbJ;
    }
    dans ce cas tu forces le mois a 02 et tu sauras le nombre de jour.

  3. #3
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Peut être qu'il existe d'autres moyens mais si tu fais la différence entre le premier jour d'une anné et de l'année suivant ça te retourneras 365, ou 366... ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql > DATEDIFF("2007-01-01", "2006-01-01");

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Si ton probleme c'est les annees bisextile et si je me souviens bien
    une année bisextile est une année multiple de 4 et pas de 100 dans il te faut juster tester cela et tu peux ainsi savoir s'il y a 29 ou 28 jours en février.
    Bonne question il conviendrait de savoir comment ça fonctionne au juste ces années bisextiles.
    ça ne joue que sur le mois de février ?

    Peut être qu'il existe d'autres moyens mais si tu fais la différence entre le premier jour d'une anné et de l'année suivant ça te retourneras 365, ou 366... ?
    J'ai pas trop compris le but de la question, dans le contexte.

    Finalement, nonobstant le code Bebel, je me demande si le plus simple n'est pas ce que j'ai dit au début, en trouvant ça nul :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     IF
    année 2006 
    OR annee 2010 
    OR annee 2014
    echo calendrier 2006 
    ELSEecho calendrier normal
    Rien que là on est tranquille pour 8 ans.
    Le tout c'est de s'en souvenir au bout de 8 ans pour réactualiser le script , mais bon.

    Vous en pensez quoi ? C'ets mieux que de faire une fonction complexe pour chaque appel, même si c'est moins déontologique, non ?

  5. #5
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    ton m'a forcé a ouvrir le dico pour ton mot "nonobstant"

    sinon oui les années bisextile ne touche que février.
    Et personnellement ta solution je la trouve pas terrible niveau maintenance. Surtout que si ton site dure plus de 8 ans (je te le souhaite) t'en souviendras tu?

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    tu m'a forcé a ouvrir le dico pour ton mot "nonobstant"
    Bonne démarche ! Je l'utilise souvent depuis que j'ai fait de même. C'est une fonction verbale utile

    sinon oui les années bisextile ne touche que février.
    Je te crois mais faudra que je vérifie, en tout cas ça simplifie le travail.

    Et personnellement ta solution je la trouve pas terrible niveau maintenance. Surtout que si ton site dure plus de 8 ans (je te le souhaite) t'en souviendras tu?
    Je suis d'accord avec toi c'est un peu bidon. Ceci dit sur le même modèle je peux le faire pour 200 ans aussi. Mais bon c'est toujours bidon. Quoique...

    J'ai un peu de mal a piger ta fonction, t'es sur qu'elle est adaptée pour ce problème, Bebel ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    function getNbJour($annee,$mois)
    {//comment vérifie que $année==1 ça sort d'où $année ?
    	if (strlen($annee) == 1)
    	{
    //on concatène 0 à 1. Pourquoi pas directement $année =01 ?
    		$annee = "0" . $annee;
    	}
    //maintenant on prend $année obtenu et on ajoute les siècles
    	$annee = "20".$annee;
    //idem pour le mois: 1  pour vérifier que c'est janvier ? 
    	if (strlen($mois) == 1)
    	{
    		$mois = "0" . $mois;
    	}
    //on crée une variable qui nous donne je ne sais pas quel résultat au juste...
    	$nbJ = date("t",mktime(0,0,0,$mois,1,$annee));
    	return $nbJ;
    }
    En plus des questions au dessus, en quoi détermines-tu les années bisextiles au moyen de cette fonction ?

  7. #7
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    strlen donne la longueur du mot, j'avais eu quelque probleme si je m'étais 1 et pas 01 c'est pour ca que je concatene 0 au mois ou a l'année si la longueur est 1. Et pareil pour le mois.

    le parametre "t" de la fonction date renvoie le nombre de jour du mois.

    Mais sinon en quoi ma fonction resouds ton probleme
    - Ton probleme est de savoir si en février il y a 28 ou 29 jours et cette fonction te renvoie le nombre de jour pour le mois donné et l'année donnée
    grâce a
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $nbJ = date("t",mktime(0,0,0,$mois,1,$annee));
    dans ce cas $nbJ contient le nombre de jours du mois $mois de l'année $annee.

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    A ce moment là on peut effectuer la fonction que si le mois est janvier, puisque les autres ne changent jamais.
    Je suis pas sur la pratique là, sinon ça me semblerait plus clair avec quelques tests.

  9. #9
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Dans ce cas, la oui puisqu'il il est facile de connaitre le nombre de jour de chaque mois, et vu qu'il n'y a que fevrier qui change tu meme supprimer la partie concernant le mois dans la fonction et n'avoir a la fin que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $nbJ = date("t",mktime(0,0,0,"02",1,$annee));

  10. #10
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Points : 472
    Points
    472
    Par défaut
    Et comment on vérifie que l'on est au mois de février au fait ?

  11. #11
    Membre éprouvé Avatar de Bebel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2003
    Messages : 786
    Points : 1 262
    Points
    1 262
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $datedeb = strftime( "m" );
    et tu ajouter d'autres parametres voir ici

Discussions similaires

  1. Comment gérer les exceptions sur un tdbgrid?
    Par zanoubya dans le forum Débuter
    Réponses: 5
    Dernier message: 21/12/2011, 15h14
  2. Réponses: 0
    Dernier message: 01/08/2011, 12h40
  3. Réponses: 4
    Dernier message: 26/08/2009, 21h55
  4. [Modèle Relationnel] comment gérer les dates d'échéance
    Par akara dans le forum Schéma
    Réponses: 7
    Dernier message: 18/04/2009, 00h56
  5. [VB] - Comment gérer les tabulations sur une fiche ?
    Par guiguikawa dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 06/03/2007, 13h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo