begin process at 2012 05 28 22:37:22
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Général

 > 

equivalence de to_days () de mysql en php


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

equivalence de to_days () de mysql en php

mercredi 9 juillet 2008 à 16:42:04 | equivalence de to_days () de mysql en php

nader19

Bonjour,
je cherche
equivalence fonction to_days de mysql en php

par exemple to_days('2008-01-01')
affiche 733407
je cherche equivalence de cette fonction en php
jeudi 10 juillet 2008 à 13:24:39 | Re : equivalence de to_days () de mysql en php

JoJo738

Membre Club
Salut :p

J'ai essayé de coder quelque chose ... mais bon :s Ca marche pas vraiment ...

function to_days($date)
{
    $return = 0;
    // Si la date est correcte pour Php
    if( ( $date_time = strtotime($date) ) )
    {
        $return += date('z', $date_time) + 1;
        // + nombre de jours depuis le début de l'année
        // +1 car commence à zero

        $return += floor( date('Y', $date_time) * 365.25);
        // On ajoute le nombre de jours en fonction des années (+ bisextilles)
    }
    else
    {
        // Permet un calcul perpétuel
        list($years, $months, $days) = split('[-/.]', $date);

        $list_days_month = array(31, ( $years % 4 ? 28 : 29 ), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

        $return += $days;
        for( $i = 0 ; $i < $months - 1 ; $i++ )
        {
            $return += $list_days_month[$i];
        }
       
        $return += floor( $years * 365.25 );
    }
    return $return;
}



Ca me retourne :
* en orange : les dates invalides pour Php ( < 1970). MySQL retourne un resultat à partir de l'an 0200(-01-01) ...
DateNombre Jours MySQLNombre Jours PHPDifférence
0001-01-01730851366730485
0200-01-017304973051-2
0500-01-01182622182626-4
1000-01-02365244365252-8
1800-12-31657801657816-15
1970-01-01719528719543-15
1970-09-04719774719789-15
1970-10-16719816719831-15
1974-11-27721319721334-15
1984-12-26725001725017-16
1987-06-10725897725912-15
1988-04-17726209726225-16
1988-10-08726383726399-16
1990-11-11727147727162-15
1995-06-02728811728826-15
2000-01-18730502730518-16
2004-12-31732311732327-16
2008-05-15733542733558-16
2008-06-09733567733583-16

Comme tu peux le voir, malgré le bon calcule ... il y a une différence de 14 à 16 (voir moins après une certaine date) jours :s


Aurais-je oublié quelque chose ???


Sinon, je ne connais pas d'équivalent à cette fonction. Il n'y en a pas non plus dans les fonctiosn date de Php

Si ma reponse te convient, merci de l'accepter ! 
jeudi 10 juillet 2008 à 13:48:46 | Re : equivalence de to_days () de mysql en php

nader19

merçi pour ta rponese mais j'ai fonction disons tu trouve pas en php mais ça donne meme résultat que to_days()
se sont des amis dans un forum anglais de php
voila la fonction
function to_days($date)
{
    $bits  = explode('-', $date, 2);
    $year = $bits[0];
    if(is_leap_year($year))
    {
        $bits[0] = '2000';
    }
    else{
        $bits[0] = '1999';
    }
    $date = implode('-',$bits);
    $leaps = 387; //leap years up to 1600
    for($i = 1600; $i < $year; $i++)
    {
        if(is_leap_year($i))
        {
            ++$leaps;
        }
    }
    $days = date('z', strtotime($date));
    return $leaps + ($year * 365) + $days + 1;
}

function is_leap_year($year)
{
    if($year % 100 == 0 && $year % 400 == 0)
    {
        return true;
    }
    if($year % 100 == 0)
    {
        return false;
    }
    if($year % 4 == 0)
    {
        return true;
    }
    return false;
}
et  la met n'importe quel date come 2008-01-01
et tu va voir
ça retourne 733407 en mysql et php
jeudi 10 juillet 2008 à 14:41:39 | Re : equivalence de to_days () de mysql en php

JoJo738

Membre Club
Réponse acceptée !
Petite amélioration :p

Fonctionne à partir de l'année 0200 ^^, et prend les formats Y/m/d et Y-m-d :p

function to_days($date)
{
    // Split() permet d'utiliser plusieurs formats de dates : Y/m/d, Y-m-d
    list($year, $month, $day)  = split('[-/.]', $date, 3);

    // Ce test " ? IF : ELSE; " est plus lent, mais on gagne du temps contre le implode(), if/else et nouvelles variables (minime, mais bon ^^)
    $date = ( is_leap_year($year) ? 2000 : 1999 ) . '-' . $month . '-' . $day;
   
    $leaps = 0; // Années bisextilles ...
    for($i = 0; $i < $year; $i++)
    {
        // Si c'est une année bisextille, on ajoute 1
        if( is_leap_year($i) )
        {
            ++$leaps;
        }
    }
   
    $days = date('z', strtotime($date));
    return $leaps + ($year * 365) + $days;
}

function is_leap_year($year)
{
    if( ( $year % 100 == 0 && $year % 400 == 0 ) OR ( $year % 100 != 0 && $year % 4 == 0 ) )
    {
        return true;
    }
    return false;
}



Si ma reponse te convient, merci de l'accepter ! 
jeudi 10 juillet 2008 à 15:11:27 | Re : equivalence de to_days () de mysql en php

nader19

cool tes modificatiosn
merçi
ça aide beaucoup surtout si on importe des dates a partir des fichiers excel
mardi 25 août 2009 à 10:38:11 | Re : equivalence de to_days () de mysql en php

tms1

si un server mysql est installé il suffit de faire une requete :

"SELECT TO_DAYS('".$date."');"

mardi 25 août 2009 à 21:26:11 | Re : equivalence de to_days () de mysql en php

nautilus99

Bonsoir,

Pour être vraiment indépendant des formats (ou absence de TO_DAYS() qui 'est pas du SQL standard), la classe DateTime fait ce que tu veux.






Cette discussion est classée dans : equivalence, php, mysql, to, days


Répondre à ce message

Sujets en rapport avec ce message

ARG ! > MySQL: Unable to save result set in ... [ par antares7364 ] Bonjour,Un problème est survenu dans une de mes tables MySQL :lorsque j'essaie d'en afficher le contenu avec PHPMyAdmin ou par unautre script PHP, MyS tableau php à partir de mysql [ par nissarte ] Salut à tousG cherché mais g rien trouvé...M'en voulez pas, je débute en php & mysql...Voila, je souhaite charger toutes les données d'un champ d'une mySQL "IN" et php [ par guiguimac ] Bonjour à tous,je cherche à faire un select * from matable where maraviable IN ?mais je ne sais pas quoi utiliser en PHP ou en Mysql pour le tableau P MySql/PHP [ par Morgiver ] Je voudrais faire une section membres ou les membres pourrais modifier leur profil et que les autres membres puisse voir leur profil, je ne sais pas t Easy Php et Mysql en resseau local [ par xav42 ] Bonjour!!!Voila mon petit probleme: Je suis debutant et j'ai fait un petit prog qui utilise une base que j'ai mis dans Mysql de esay php. En local, to statistiques ,graphique, php et mysql [ par mouss ] connaissez vous des exemples mettant en oeuvre une base de donnée mysql ,php permettant de créer des courbes, nuages de points sur une feuille html (p php et mysql [ par stephane ] bonjour,j'ai des pb d'acces aux base de donnees, je suis sur free donc le 'host' est ftpperso.free.fr enfin ca c'est bon j'ai bien mis mon login et pa php et mysql : les index s'affichent pas !!! [ par stephane ] Voila, j'utilise cette procédure pour afficher les index d'une table (je suis deja connecté à la base de donnees) :$mode représente la table$rep=@mysq PB update table mysql ! [ par lolo ] Comment pourrai-je faire pour mettre à jour une table mysql par le biais d'un formulaire (parcourir ...*.cvs) et d'un fichier php d'update de table my Perdu avec mysql ... [ par guiguimac ] bonsoir !voici le message d'erreur qui me gêne :Warning: 0 is not a MySQL result index in your script on line 131en fait je lance ma page php avec la


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

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,250 sec (4)

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