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] Remplacer la date en chiffres par "aujourd'hui" ou "hier"


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] Remplacer la date en chiffres par "aujourd'hui" ou "hier"
    Bonjour

    J'ai les neurones un peu collé là, alors je me demande si vous pourriez m'expliquer comment remplacer dans mon forum la date du message par "aujourd'hui" ou "hier", si cette date est la date du jour.

    Dans mon forum, les dates sont dans ce format 00.00.0000 à 00h00.

    Merci d'avance
    C'est pas parce que j'ai tort que vous avez raison.

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    Normalement sur le forum c'est un timestamp...
    En utilisant ce timestamp et le date() tu peux obtenir le jour.
    Pour ce qui est la date du jour un date() avec comme paramètre ce qu'il faut te donnera aussi le jour.
    Il te reste plus qu'à faire des tests du style date du jour -1 ou date du jour = la date du timestamp...

    Et ect...

    edit : Voici un exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $jourforum = date("d",$bddtimestamp);
    $jouractuel = date("d");
    if($jourforum + 1 ==  $jouractuel) echo "hier";
    else if($jourforum  ==  $jouractuel)  echo "ajourd'hui";
    else echo .....

  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 Kerod,

    Effectivement avec ta méthode ça parait simple. Par contre dans mon forum, les dates sont au format datetime.
    Donc toi tu dis de les stocker sous forme de date unix, en seconde, c'est ça (time(), si je me souviens bien) ?
    Mais comment je fais ensuite pour convertir un time() en date(), lors de l'affichage pour les autres jour qu'aujourd'hui ou hier, ou ailleur du reste ?
    C'est pas parce que j'ai tort que vous avez raison.

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    ton format datetime est comment ? Sur mon forum c'est plutot en format unix (timestamp) mais il y a un moyen d'adapter...

    Tu peux pas utliser ceci pour retourner sur le format unix ? (strtotime) ou ...

  5. #5
    Membre du Club
    Inscrit en
    Mai 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mai 2006
    Messages : 60
    Points : 66
    Points
    66
    Par défaut
    supposons que tas une variable $timestamp au format aaaa-mm-jj 00:00:00

    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
    19
    20
    21
    22
    $hour = substr($timestamp, 11, 2); 
    $minute = substr($timestamp, 14, 2); 
    $second = substr($timestamp, 17, 2); 
    $month = substr($timestamp, 5, 2); 
    $day = substr($timestamp, 8, 2); 
    $year = substr($timestamp, 0, 4);
     
    $timestamp = mktime($hour,$minute,$second,$month,$day,$year);
     
    $timestamphier = mktime(0,0,0,$month,$day-1,$year);
     
    Tu peux alors vérifier avec la date du jour et la date d'hier :
     
    $dateduforum = date("Y-m-d",$timestamp);
    $datejour = date("Y-m-d");
    $datehier = date("Y-m-d",$timestamphier);
     
    if (strcmp($dateduforum,$datejour) == 0) {
     C'est aujourd'hui...
    } elseif (strcmp($dateduforum,$datehier) == 0) {
     C'est hier...
    }
    Ça devrait fonctionner !

  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    il me semble que la fonction que j'ai donné donne directement le timestamp donc pas besoin de substr

    De plus pourquoi retourner sous le format y-m-d si on fait comme tu as dit avec le timestamp en fixant l'heure on peut directement tester l'égalité entre les timestamps

  7. #7
    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,

    je suis de nouveau sur le problème.
    Alors j'ai rajouté dans la table un champ qui contient la date en time().

    Donc pour marquer aujourd'hui, hier ou avant hier c'est tout simple, j'ai juste à faire une soustraction.

    Par contre je dois quand même extraire l'heure de mon champs datetime.
    Dans la requête SQL je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT   DATE_FORMAT(date,'%d-%m-%Y à %kH%i') AS Date
    Et donc là je dois récupérer %kH%i dans une nouvelle variable pour pouvoir l'afficher à coté de "aujourd'hui" ou "hier".

    Je fais comment SVP ? Je suis obligé de passer par le substr de Tiois ?


    **edit**
    Je viens de faire ça sous requête, dans la boucle qui affiche les résultats :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $heure = substr($R[Date], 11, 2); 
    $minute = substr($R[Date], 14, 2);
    Mais les echos affiche &a + ra
    C'est pas parce que j'ai tort que vous avez raison.

  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
    C'est bon, j'ai juste fait ça dans la requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DATE_FORMAT(date,'%kH%i') AS DateM
    C'est pas parce que j'ai tort que vous avez raison.

  9. #9
    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
    Par contre je me demande si ma solution va pas être un problème si je veux changer le créneau horraire pour l'affichage des heures du forum

    **edit**
    non en fait il faut juste réincrémenter ou décrémenter le champ time() à priori

    **edit2**
    Sacré monologue n'est-il pas ?
    C'est pas parce que j'ai tort que vous avez raison.

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

Discussions similaires

  1. Remplacer une date par une valeur
    Par sniper75 dans le forum SAS Base
    Réponses: 4
    Dernier message: 04/12/2012, 21h30
  2. Comment remplacer la date d'un champ timestamp par une autre date ?
    Par clavier12AZQSWX dans le forum Requêtes
    Réponses: 3
    Dernier message: 13/12/2011, 17h27
  3. [XL-2007] couleur cellule date differente si date passee, ou date du jour
    Par chris09300 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 29/03/2011, 08h24
  4. Methodes Date remplacer par Calendar
    Par Invité(e) dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 12/06/2008, 15h47
  5. [VBA-E] Dates avec année à deux chiffres
    Par BBe8127 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 27/09/2005, 17h23

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