begin process at 2012 05 29 01:17:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

difference entre deux datetime


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

difference entre deux datetime

samedi 19 janvier 2008 à 06:10:28 | difference entre deux datetime

paguira

Bonjour,
Je cherche une fonction permettent de faire la difference entre deux datetime afin d'afficher la durer de création d'un article
exemple:
"publié il y 20 minutes" ou "publié il y a 1 heure 30" etc...

J'ai trouvé cette article: [ Lien ]
mais je trouve pas la solution
samedi 19 janvier 2008 à 09:22:43 | Re : difference entre deux datetime

bcmfr

Membre Club
Salut
une petite recherche sur phpcs et tu trouveras certainement de quoi t'aider
http://www.phpcs.com/recherche.aspx?tr=forum&r=diff%e9rence+date
@+
samedi 19 janvier 2008 à 18:26:14 | Re : difference entre deux datetime

paguira

Que pensez vous du script que je viens juste de faire ?
<?php
function convertSec($startDate, $endDate, $lang='en'){

    //    Extraction des secondes, minutes, heure, jours, mois, années
    if (ereg("([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})", $startDate, $startregs)){
        if(strlen($startregs[1]) <4) $startregs[1] = "20$startregs[1]";
        if(strlen($startregs[2]) <2) $startregs[2] = "0$startregs[2]";
        if(strlen($startregs[3]) <2) $startregs[3] = "0$startregs[3]";
        if(strlen($startregs[4]) <2) $startregs[4] = "0$startregs[4]";
        if(strlen($startregs[5]) <2) $startregs[5] = "0$startregs[5]";
        if(strlen($startregs[6]) <2) $startregs[6] = "0$startregs[6]";
        // timestamp
        $startDateStamp = mktime($startregs[4], $startregs[5], $startregs[6],  $startregs[2], $startregs[3], $startregs[1]);
    }
    //    Extraction des secondes, minutes, heure, jours, mois, années
    if (ereg("([0-9]{2,4})-([0-9]{1,2})-([0-9]{1,2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})", $endDate, $endregs)){
        if(strlen($endregs[1]) <4) $endregs[1] = "20$endregs[1]";
        if(strlen($endregs[2]) <2) $endregs[2] = "0$endregs[2]";
        if(strlen($endregs[3]) <2) $endregs[3] = "0$endregs[3]";
        if(strlen($endregs[4]) <2) $endregs[4] = "0$endregs[4]";
        if(strlen($endregs[5]) <2) $endregs[5] = "0$endregs[5]";
        if(strlen($endregs[6]) <2) $endregs[6] = "0$endregs[6]";
        // timestamp
        $endDateStamp = mktime($endregs[4], $endregs[5], $endregs[6],  $endregs[2], $endregs[3], $endregs[1]);
    }   
   
    $txt             = '';

    $time            = $endDateStamp-$startDateStamp  ;
   
    if($startDate && $endDate && $lang){
       
        // Les langues
        switch($lang){
            case 'fr':
                $startTxt             = 'Posté il y a ';
                $startTxtAgo        = 'Posté il y a';
                $startTxtDate         = 'Posté le ';
                $stringSeconde         = ' seconde';
                $stringSecondes     = ' secondes';
                $stringMinute         = ' minute';
                $stringMinutes         = ' minutes';
                $stringHour            = ' heure';
                $stringHours        = ' heures';
                $stringYesterday     = ' Posté hier à ';
                $stringA            = ' à ';
                $stringAgo            = '';
                $stringAnd            = ' et ';
            break;
            case 'en':
                $startTxt             = 'Posted ';
                $startTxtAgo        = 'Posted ago';
                $startTxtDate         = 'Posted on ';
                $stringSeconde         = ' seconde';
                $stringSecondes     = ' secondes';
                $stringMinute         = ' minute';
                $stringMinutes         = ' minutes';
                $stringHour            = ' hour';
                $stringHours        = ' hours';
                $stringYesterday     = ' Posted yesterday at ';
                $stringA            = ' at ';
                $stringAgo            = ' ago';
                $stringAnd            = ' and ';
            break;
        }
   
        // une seconde
        if($time == 1 && $startregs[3] == $endregs[3]) $txt = $startTxt . $time . $stringSeconde . $stringAgo;
        // texte en seconde
        if($time < 60 && $startregs[3] == $endregs[3]) $txt = $startTxt . $time . $stringSecondes . $stringAgo;
        // une minute
        if($time == 60 && $startregs[3] == $endregs[3]) $txt = $startTxt . '1' . $stringMinute . $stringAgo;
        // texte en minute
        if($time > 60 && $time < 3600 && $startregs[3] == $endregs[3]){
            $Minute = $time/60;   
            $Minute = floor($Minute);
            $txt = $startTxt . $Minute . $stringMinutes . $stringAgo;
        }
        // une heure
        if($time == 3600) $txt = $startTxt . '1' . $stringHour . $stringAgo;
        // texte en heure et/ou minute
        if($time >3600 && $startregs[3] == $endregs[3]){
            $Hour             = $time/3600;                   
            $floorHour         = floor($Hour);           
            $Minute         = ($Hour-$floorHour)*60;           
            $floorMinute     = floor($Minute);
       
            switch($lang){
                case 'fr':
                    if($Minute === 1){
                        if($Hour === 1){
                            $txt     = $startTxt . $floorHour . $stringHour . $stringAnd . $floorMinute. $stringMinute;
                        }else{
                            $txt     = $startTxt . $floorHour . $stringHours . $stringAnd . $floorMinute. $stringMinute;
                        }
                    }else if($Minute){
                        if($Hour === 1){
                            $txt     = $startTxt . $floorHour . $stringHour . $stringAnd . $floorMinute. $stringMinutes;
                        }else{
                            $txt     = $startTxt . $floorHour . $stringHours . $stringAnd . $floorMinute. $stringMinutes;
                        }
                    }else{
                        if($Hour === 1){
                            $txt     = $startTxt . $floorHour . $stringHour;
                        }else{
                            $txt     = $startTxt . $floorHour . $stringHours;
                        }
                    }
                break;
                case 'en':
                    if($Minute === 1){
                        if($Hour === 1){
                            $txt     = $startTxtAgo . $floorHour . $stringHour . $stringAnd . $floorMinute. $stringMinute;
                        }else{
                            $txt     = $startTxtAgo . $floorHour . $stringHours . $stringAnd . $floorMinute. $stringMinute;
                        }
                    }else if($Minute){
                        if($Hour === 1){
                            $txt     = $startTxtAgo . $floorHour . $stringHour . $stringAnd . $floorMinute. $stringMinutes;
                        }else{
                            $txt     = $startTxtAgo . $floorHour . $stringHours . $stringAnd . $florMinute. $stringMinutes;
                        }
                    }else{
                        if($Hour === 1){
                            $txt     = $startTxt . $floorHour . $stringHour . $stringAgo;
                        }else{
                            $txt     = $startTxt . $floorHour . $stringHours . $stringAgo;
                        }
                    }
                break;
            }
           
        }
        // la date si > 2 jour
        if($time > 86400 && $startregs[3] != $endregs[3]){
   
            switch($lang){
                case 'fr':
                    $txt = $startTxtDate . $startregs[2] . '/' . $startregs[3] .'/'. $startregs[1] .' '. $stringA . $startregs[4] . ':' . $startregs[5];
                break;
                case 'en':
                    $txt = $startTxtDate . $startregs[3] . '/' . $startregs[2] .'/'. $startregs[1] .' '. $stringA . $startregs[4] . ':' . $startregs[5];
                break;

            }
        // hier date > 1 jour et date < 2 jours
        }else if( $time >=1 && $startregs[3] != $endregs[3]){
            $txt     = $stringYesterday . $startregs[4]   . ':' . $startregs[5];
        }

    }
    return $txt;
   
}

// Exemple :
$today         = date('Y-m-d H:i:s');
$today         = '2008-01-18 00:00:00';
$sql_date     = '2008-01-17 23:59:59';

echo $today . '<br />';
echo $sql_date . '<br />';

echo '<hr />';
echo convertSec($sql_date, $today, 'fr');
echo '<hr />';
.?>

lundi 21 janvier 2008 à 12:03:56 | Re : difference entre deux datetime

codefalse

Administrateur CodeS-SourceS
Personnellement j'aurai modifié tes deux dates au format unix timestamp, j'aurai soustrait, et ensuite j'aurai converti au format date courante. c'est plus court (par contre si la date est inférieur au 1er Janvier 1970 c'est foutu :p).
Les fonctions, c'est date et mktime.
Voila :)


Cette discussion est classée dans : article, datetime, difference, publié


Répondre à ce message

Sujets en rapport avec ce message

Afficher les données dans un tableau ? [ par inceV ] Contenant 2 lignes et 1 seule cellule :c'est à dire :- 1ère ligne où je veux afficher le titre de l'article par exemple,-2ème ligne où je veux affiche Nom de variable... [ par RockmanX ] Voilà,j'ai un fichier que je vais appeler form.php4 qui contient 1 input : idarticle est l'id d'un article de base mysqlet nbrarticle est la quantité. Difference entre... [ par apz ] salut a tous, 2 questions : Quelles est la difference entre : 1- la condition if($v="v") et la condition if($v=="v") et la condition if($v). 2- le tab serveur d'informations et d'actualités [ par hackoo ] Salut, je cherche un script complet pour la création d'un seveur d'informations et d'actualités dans lequel le lecteur peut devenir acteur ,avec la po Datetime et MySQL [ par DarkSchneider ] Bonjour, Encore un problème, un de plus.Cette fois-ci, c'est les dates.Dans ma base MySQL, j'ai crée une table avec divers champs, dont un se nomm MySQL DATETIME [ par eax ] saluty'a qqun qui pourrait me dire comment faire pour rechercher des données dans une table MySQL:j'ai un champ `cree_le` qui est un timestamp (DATETI un petit prob de requete [ par twiems ] Twiemsbonjour a tousJe souhaite réaliser une jointure dans mon application internet en PHP entre une table commander et une table article par le champ difference ente cookies et sessions [ par valva ] je ne voi pas trop bien la difference entre sessions et cookies SVP aider moi !!merci d'avance [E-Commerce] pb de passage de paramètre à une fonction [ par cedvoyage ] Je suis encore bloqué, merci de bien vouloir m'aider un peu. /!\ ATTENTION : ce message est très très long ... si vous êtes courageux aujourd'hui pour Securité PHP [ par phpwankenobi ] Bonjour, j'ai lu un jour un article sur PHP traitant de la securite et de register_globals on/off.Il y ettait ecrit que l'on puvait se faire pirater s


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 0,796 sec (4)

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