Communauté Informatique NDFR.net

Communauté Informatique NDFR.net (http://www.ndfr.net/forums/index.php)
-   Programmation Web (HTML, PHP, ASP, Java, XML, etc.) (http://www.ndfr.net/forums/forumdisplay.php?f=65)
-   -   PHP/MySQL changer un format de date (http://www.ndfr.net/forums/showthread.php?t=7290)

wuub 20-04-2006 18:22

PHP/MySQL changer un format de date
 
Bonjour à tous,

j'essai, en vain, de transformer l'affichage d'une date issue d'une base sql.

j'ai essayé ca : $data['date'] = strftime('%d.%m', $data['date']);
mais ca me renvoi la date du jour.

C'est pour afficher une date de news, il y a aussi $data['news'],
dans lesquels j'arrive bien a faire $data['news'] = str_replace("\n","<br>", $data['news']);

'fin bref j'y arrive pas... :p

Quelqu'un peut m'aider, please ?

Spycam 20-04-2006 19:07

Perso j'utilise ceci :
Code:

function Fdate($date)
{
        if($date!="")
        {
                $lemois['01']="Janvier";
                $lemois['02']="Février";
                $lemois['03']="Mars";
                $lemois['04']="Avril";
                $lemois['05']="Mai";
                $lemois['06']="Juin";
                $lemois['07']="Juillet";
                $lemois['08']="Août";
                $lemois['09']="Septembre";
                $lemois['10']="Octobre";
                $lemois['11']="Novembre";
                $lemois['12']="Décembre";
               
               
                if ( ereg( "([0-9]{4})-([0-9]{2})-([0-9]{2})", $date, $regs ) )
                {
                        return $regs[3]." ".$lemois[$regs[2]]." ".$regs[1];
                } else
                {
                        if($date=="NULL"){return "";}
                        else{return $date; }
                }
        }
        else {return "";}
}

Ca prend en paramètres une date au format classique YYYY-MM-DD et renvoie une string (avec transformation du mois en lettres).
Mais je ne suis pas sur que c'est bien ce que tu cherches.

wuub 20-04-2006 19:30

En effet ca ne correspond pas... mais merci quand meme
au fait je me rend compte que j'ai oublié de preciser que je voudrais changer le format US (2006.04.20) en format FR court (20.04).

SantX 20-04-2006 19:52

Dans ta base de données, ta date est de quelle forme exactement : Standards SQL, Timestamp Unix, ... ?

LeMoi 20-04-2006 20:37

Autant de lemoi(s) dans une seule page, ça fait bizarre :D

fonji 20-04-2006 20:37

Si tu as le timestamp (ou une manière de l'avoir), tu peux utiliser la fonction date()


EDIT : strtotime() peut t'aider en fait pour avoir le timestamp.

SantX 20-04-2006 21:09

Quote:

Originally Posted by fonji
Si tu as le timestamp (ou une manière de l'avoir), tu peux utiliser la fonction date()


EDIT : strtotime() peut t'aider en fait pour avoir le timestamp.

C'est bien pour cela que je lui demandais la forme de sa date ;)

Qu'il est fort ce fonji :D

fonji 20-04-2006 21:25

Ouais bah voilà quoi j't'ai coupé l'herbe sous le pied...
Si il nous donne le format de sa date, ça sera au plus rapide qui fera une fonction pour la mettre au format anglais :)

SantX 20-04-2006 21:46

Quote:

Originally Posted by fonji
Ouais bah voilà quoi j't'ai coupé l'herbe sous le pied...
Si il nous donne le format de sa date, ça sera au plus rapide qui fera une fonction pour la mettre au format anglais [img]images/smilies/happy.gif[/img]

Admettons, villain petit coupeur d'herbe :D

wuub 20-04-2006 23:46

Dans le champs PHPMyAdmin j'ai choisi "DATE" tout simplement.

fonji 21-04-2006 06:43

Et tu as quoi comme format dans $data['date'] ?

Benjy 21-04-2006 10:35

Si le format de la colonne est DATE, alors il est du type 'YYYY-MM-DD'.

Deux solutions sont possibles. La première avec les fonctions strtotime() et date() :
PHP Code:

$timestamp strtotime($data['date']);
$datefr date('d-m'$timestamp); 

Tu peux utiliser les fonctions setlocale() et strftime() si tu veux afficher la date en toutes lettres et en français.

La seconde en se servant d'une décomposition de la chaîne en tableau, avec la fonction explode() :
PHP Code:

$datearr explode('-'$data['date']);
$datefr $datearr[2] . '-' $datearr[1]; 

NB : il est fortement déconseillé de donner à un champ un nom de type comme 'DATE' ou 'TIME'.

EDIT : une 3ème solution est envisageable, celle de faire la transformation lors de ta requête MySQL avec la fonction DATE_FORMAT() :
Code:

SELECT DATE_FORMAT(nomduchampdetypedate, '%d-%m') AS alias
FROM nomdelatable
WHERE conditions


wuub 21-04-2006 15:23

La première solution marche nickel ^^
Merci à tous pour le coup de pouce ;)

Eleonore 30-04-2006 17:20

transformer une date YYYY-MM-DD hh:mm:ss en secondes?
 
Salut tlm,
J'ai moi aussi des problèmes en php (stt que je suis vraiment débutante!)
En fait j'aimerais afficher la news la plus récente en listant tt ma base et en voyant le jour le plus récent en transformant ces dates en secondes et en les comparant, mais je ne trouve pas la fonction qui peut le faire?
Une idée?

Samva 30-04-2006 17:36

Quote:

Originally Posted by Eleonore
Salut tlm,
J'ai moi aussi des problèmes en php (stt que je suis vraiment débutante!)
En fait j'aimerais afficher la news la plus récente en listant tt ma base et en voyant le jour le plus récent en transformant ces dates en secondes et en les comparant, mais je ne trouve pas la fonction qui peut le faire?
Une idée?

Fais quelques recherche sur des tutos, mais t'as pas besoin de t'enerver comme ça, SQL te permet d'ordonner comme tu veux "ORDER BY champs_date DESC" dans ta requête suffit ;)


All times are GMT +2. The time now is 23:57.

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.