[PHP] Transformation date

Bonjour m’sieurs dames!

Voila, j’enregistre mes dates sous ce format : 20050217160112 histoire de gagner de la place dans ma BDD… Maintenant je voudrais la transformer en un truc du style : Le 05/02/2005 à 12:01:16

Quid? :stuck_out_tongue:

Heuu … environs 3 secondes de recherche sur nexen.net :stuck_out_tongue:

Si t’as mis la date dans ta base de donne sous forme de DATETIME tu as toutes les fonction integree pour faire ce que tu veux. Si tu l’as enregistree sous forme de chaine de caracteres… dommage… t’as fait une connerie :stuck_out_tongue: bonne chance avec la fonction substring ou en repassant par une vrai date en parsant ta chaine :stuck_out_tongue:

[code]$time = “20050217160112”;

$annee = substr($time, 0, 4);
$mois = substr($time, 4, 2);
$jour = substr($time, 6, 2);
$heures = substr($time, 8, 2);
$minutes = substr($time, 10, 2);
$secondes = substr($time, 12, 2);

$chaine = ‘Le ‘.$jour.’/’.$mois.’/’.$annee. ’ à ‘.$heures.’:’.$minutes.’:’.$secondes;[/code]

[code]$timestamp_unix = mktime($heures, $minutes, $secondes, $mois, $jour, $annee);

$chaine = date(“Le d/m/Y à H:i:s”, $timestamp_unix);[/code]
Dans mes bases de données c’est une colonne de type “datetime” et sous la forme “2003-05-21 18:19:21”. Comme ceci :$datetime = $annee.'-'.$mois.' - '.$heures.':'.$minutes.':'.$secondes;
Edit : correction.

Question : je me suis rendu compte en lisant datetime qu’on utilisait pas le timestamp UNIX (le nombre de secondes depuis 1970) dans MySQL, comment se fait-il ?

Ca me retourne ceci :

Le 17160112/021716/2005 à 160112:0112:12

on dirais que 1716 reviens dans les jours/mois et 01 dans les heures… mais je vois pas de quoi ca vient :confused:

EDIT : j’ai utilisé la solution avec la fonction substr()

Euh, tout comme GloP, c’est quoi le super truc que ça t’apporte de garder tes dates comme un string, à part de te faire chier à coder derrière?

Ou c’est vraiment trop tard pour reconvertir ta BBDD en DateTime?

[quote name=‘Zekiller’ date=’ 18 Feb 2005, 00:26’]Euh, tout comme GloP, c’est quoi le super truc que ça t’apporte de garder tes dates comme un string, à part de te faire chier à coder derrière?

Ou c’est vraiment trop tard pour reconvertir ta BBDD en DateTime?
[right][post=“333812”]<{POST_SNAPBACK}>[/post][/right][/quote]

Le truc c’est que il me semble que ca prend moins de place comme ca. Enfin, de un je l’ai lu sur plusieures sources (dont un bouquin) et de deux ca me parrait logique

Ou alors chuis completement à coté de la plaque?

[quote name=‹ AkyRhO › date=’ 17 Feb 2005, 22:17’]Le truc c’est que il me semble que ca prend moins de place comme ca. Enfin, de un je l’ai lu sur plusieures sources (dont un bouquin) et de deux ca me parrait logique

Ou alors chuis completement à coté de la plaque?
[right][post=« 333848 »]<{POST_SNAPBACK}>[/post][/right][/quote]
T’es completement a cote de la plaque.

Je sais pas ou t’as vu jouer que c’etait plus petit mais suffit de compter, un datetime precis a la seconde en « unix epoch » qui est le format par defaut de mysql (nombre de secondes depuis 1/1/1970) c’est un int32, c’est a dire 32 bits. Le meme en string 20050217160112 comme tu le cite pour peu que ca soit en ascii c’est 14 byte, soit 14*8=112 bits. Soit 3.5 fois plus de place. Et si ta base de donnee stocke ca en WString c’est le double, soit 7 fois plus de place.

Sans compter toutes les operations de manipulation de string que t’as a faire qui sont lentes et zero efficaces. Si ils se sont amuses a faire un format datetime dans la DB, c’est pas pour faire joli oule plaisir de perdre du temps. Tu veux une date simple → date, tu veux une date avec une heure → datetime. Tu veux l’affichier selon X, Y ou Z format, tu utilise les fonction speciales fait pour. C’est pas complique du tout :stuck_out_tongue:

franchement les type de dates et heures beurk
un int(10) qui stocke un timestamp unix m’es bien plus pratique

Les seuls qui se permettent de faire cela ce sont les éditeurs multi-plateformes, comme certaines ERP, pour avoir une seule API

  • dates en chaines
  • null remplacé par des blancs
  • etc …

En fait le plus petit commun dénominateur. Mais ils ne sont pas à cela près.
D’un point de vue théorie de base de données ça fait souvent peur leurs bases.

Mais si on a inventé des NULL, des dates etc … c’est pas pour rien. Sinon il faut se réinventer la roue. Bon courage !

[quote name=‹ kursk › date=’ 18 Feb 2005, 09:18’]franchement les type de dates et heures beurk
un int(10) qui stocke un timestamp unix m’es bien plus pratique
[right][post=« 333868 »]<{POST_SNAPBACK}>[/post][/right][/quote]
C’est ce que j’ai fais au final :P… je ne savais pas que c’étais aussi simple a utiliser :stuck_out_tongue: