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 :

Le pluriel ou singulier avec les dates


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Février 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 12
    Points : 14
    Points
    14
    Par défaut Le pluriel ou singulier avec les dates
    Bonjour à vous tous cher ami(s) codeur,
    J,ai un petit souci. Je vous explique j'ai une fonction php qui me fait un calcul entre la date du moment et la date dans ma bd pour m'indiquer que mon post à été publier il y a 1 mois ou 1 jour etc etc. Mais le problème est que dans ma fonction j'ai mis un s pour mon pluriels mais comme le mots mois est déjà supposer avoir un s même au singulier j'arrive pas à faire cette fonction pour prendre tout sa en considération car la j'ai mis moi pas de s pour mon singulier mais ce n'est pas trop professionnel et jolie non plus alors quelqu'un pourrais t'il m'aidé svp Merci à l'avance je vous envoi mon code source pour que vous voyez ce que je pourrais apporter à ma fonction.
    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    static function time_elapsed_string($datetime, $full = false) {
     
            $now = new DateTime;
            $ago = new DateTime($datetime);
            $diff = $now->diff($ago);
     
            $diff->w = floor($diff->d / 7);
            $diff->d -= $diff->w * 7;
     
            $string = array(
                'y' => 'an',
                'm' => 'moi',
                'w' => 'semaine',
                'd' => 'jour',
                'h' => 'heure',
                'i' => 'minute',
                's' => 'seconde',
            );
            foreach ($string as $k => &$v) {
                if ($diff->$k) {
                    $v = $diff->$k . ' ' . $v . ($diff->$k > 1 ? 's' : '');
                } else {
                    unset($string[$k]);
                }
            }
     
            if (!$full)
                $string = array_slice($string, 0, 1);
            return $string = 'Il y a environ ' . implode(', ', $string);
        }

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    corrige ton tableau : 'm' => 'mois' et fais comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $v = $diff->$k . ' ' . $v . (($diff->$k > 1) && ($k !== 'm') ? 's' : '');
    Par contre ta fonction me semble trop approximative : si par exemple tu places le curseur au 2016-01-01 18:53:27, elle te renvoie "Il y a environ 1 mois" !!! Alors que cela devrait être plutôt "Il y a environ 2 mois"

  3. #3
    Membre à l'essai
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Février 2014
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Transports

    Informations forums :
    Inscription : Février 2014
    Messages : 12
    Points : 14
    Points
    14
    Par défaut Merci
    Premièrement Merci pour ta réponse celà fonctionne très bien.
    Effectivement comme tu dit ma réponse va toujours être un peu en dessous par rapport au comptage mais si tu a une solution pour y remedier je serais preneur car d'après moi faudrais avoir énormément plus de calcul dans la fonction encore?

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Tiens une discussion semblable qui vient de se finir et à laquelle j'ai contribué. Inspire toi en ou pompe le code, c'est fait pour ça

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

Discussions similaires

  1. Help!! Probleme avec les dates sur SQL SERVER
    Par Nadaa dans le forum MS SQL Server
    Réponses: 16
    Dernier message: 03/08/2006, 16h55
  2. problème avec les dates nulles
    Par shingo dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 30/09/2005, 12h32
  3. [SQL] problème avec les date et les group By
    Par Stef784ever dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/11/2004, 09h18
  4. Pb avec les dates < année 2000
    Par elitost dans le forum Oracle
    Réponses: 2
    Dernier message: 15/09/2004, 12h37
  5. Interbase - dbExpress -> problème avec les dates
    Par marghett dans le forum Bases de données
    Réponses: 4
    Dernier message: 02/07/2004, 03h55

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