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] Date hier et aujourd'hui : mais si on est le 31 ?


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] Date hier et aujourd'hui : mais si on est le 31 ?
    Bonjour,

    Voilà j'ai cette petite focntion pour transformer les dates des messags du forum en "aujourd'hui" ou "hier", si les messages sont du jour même ou du jour précédent. Sinon ça affiche la date complète, en chiffre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $jourforum = date("d",$R[dateNombre]);
    $jouractuel = date("d");
    if($jourforum + 1 ==  $jouractuel) { $afficheDate="hier à $R[DateM]";}
    else if($jourforum  ==  $jouractuel){  $afficheDate="aujourd'hui à $R[DateM]";}
    else{$afficheDate="$R[Date]";};
    $R[dateNombre] est la date du post, au format time().


    Mais je me pose la question suivante : si le message a été posté le 31 et que nous sommes le 1er, cette fonction va-t'elle fonctionner ?
    C'est pas parce que j'ai tort que vous avez raison.

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Citation Envoyé par psychoBob
    Mais je me pose la question suivante : si le message a été posté le 31 et que nous sommes le 1er, cette fonction va-t'elle fonctionner ?
    non, en plus, tu ne prends en compte ni le mois, ni l'année
    Il vaudrait mieux que tu fasses un truc dans ce style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $timepost = mktime(0,0,0, date('m', $R[dateNombre]), date('d', $R[dateNombre]), date('Y', $R[dateNombre]));
    $timejour = mktime(0,0,0, date('m'), date('d'), date('Y'));
    if($timepost + (24*3600) ==  $timejour) { $afficheDate="hier à $R[DateM]";}
    else if($timepost ==  $timejour){  $afficheDate="aujourd'hui à $R[DateM]";}
    else{$afficheDate="$R[Date]";};
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  3. #3
    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
    Salut Swoög, merci pour ta réponse rapide.

    Alors je viens de tester, à vue de nez ça fonctionne bien. Mais je vais pas pouvoir vérifier si ça fonctionne avec le problème ci-dessus avant la fin du mois... Ou alors il va falloir que je me persuade en comprenant mieux la fonction.

    Une question déjà : le script que tu me files là, c'est un classique pour effectuer la chose ou tu l'as pondu de tête, comme ça ?

    Si j'essaye de piger :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    1) L'heure du message avec mk time qui récupère le mois, la date et l'année à partir de la date unix, les trois premiers zero marquant les heures minutes secondes (pourquoi sont-ils à cette position)
    $timepost = mktime(0,0,0, date('m', $R[dateNombre]), date('d', $R[dateNombre]), date('Y', $R[dateNombre]));
     
    2) idem pour la date du jour
    $timejour = mktime(0,0,0, date('m'), date('d'), date('Y'));
     
    3) si la date d'hier plus 24h (pourquoi pas directement 86400 on gagne du temps? C'est peut être pour que je pige mieux) égal la date du jour on affiche hier
    if($timepost + (24*3600) ==  $timejour) { $afficheDate="hier à
    $R[DateM]";}
    else if($timepost == $timejour){ $afficheDate="aujourd'hui à $R[DateM]";}
    else{$afficheDate="$R[Date]";};
    [/CODE]

    Question subsidiaire : Dans le point n°3, on a si la date du post + 86400 == la date du jour...
    Là date du post elle est au format time() non ? Donc pourquoi en y ajoutant pile 86400 devrait-on tomber sur la date du jour ? ça ne devrait se vérifier qu'une seule seconde par jour ? Il me semble qu'il aurait fallu un < ou un > et non un ==.
    Pourtant, ça à l'air de fonctionner, alors qu'est ce que j'ai raté ?
    C'est pas parce que j'ai tort que vous avez raison.

  4. #4
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    Bah, je l'ai pondu de tête, mais avec l'habitude, on voit vite les solutions, puis c'est un type de problème assez courant

    Tu as compris le fonctionnement global, et en fait, la question que tu poses à la 1, trouve sa réponse dans la remarque que tu soulève à la fin...

    On fait les comparaisons à la seconde près pour les timestamp, donc ça risque d'être problèmatique...

    Donc pour pouvoir comparer au jour le jour, on supprime toutes les informations inutiles (heure, minute, seconde) de ce fait, les deux timestamp générés (jour et post) représentent chacun une date à 0h00m00s.

    Résultat, on peut se déplacer de pile 24h sans problème

    pour le "+ (24*3600) " c'est simplement par habitude, je connais ces valeurs là, pas leur résultat, et puis après quand on relit le code plus tard, on comprend mieux
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag (en bas)

  5. #5
    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
    Ok, je pense avoir compris si y'a un truc qui m'échappe je repose la question (là je suis ko j'en fini plus de finir de terminer d'achever ma v3).

    Merci Swoög
    C'est pas parce que j'ai tort que vous avez raison.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [2008] Date d'aujourd'hui mais heure fixe
    Par glooping dans le forum Développement
    Réponses: 5
    Dernier message: 29/04/2015, 10h57
  2. Meta robots, noindex aujourd'hui, mais index plus tard possible ?
    Par cuisto44000 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 17/12/2011, 22h40
  3. Réponses: 0
    Dernier message: 30/11/2007, 09h51
  4. Réponses: 8
    Dernier message: 01/06/2006, 23h27
  5. Réponses: 5
    Dernier message: 12/04/2006, 09h56

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