PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 12-11-2012 18:05:43

dadou
Membre
Inscription : 12-11-2012
Messages : 3

[Résolu] Date + Heure au format français

Bonjour à tout le monde smile

J'ai passé 1h30 à chercher la solution sur plusieurs forums de php mais rien à faire je trouve rien, ou bien des exemples mais je n'arrive pas a mettre en place.

J'ai un vieux script de 2007 sur mon pc (wamp local) avec la fonction :


// Formate une date de type YYYY-mm-dd (HH:ii:ss) au format jj/mm/aaaa ou jj/mm/aaaa à Hhm
function dateFrench($date)
{
if(($len_date=strlen($date)) == 10)
{
return eregi_replace("([0-9]{4})-([0-9]{2})-([0-9]{2})","\\3/\\2/\\1",$date);
}
elseif($len_date == 19)
{
return eregi_replace("([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})","\\3/\\2/\\1 à \\4h\\5",$date);
}
return false;
}
 

Alors bon, mon code fonctionne cela affiche bien en français mais j'ai une erreur :
Deprecated: Function eregi_replace() is deprecated in C:\wamp\www\EsBaseAdmin\default\inc\fonctions.php on line 150

J'ai effectué une recherche, je me suis rendu compte que c'est devenu une fonction obsolète de php ! (doc que j'ai trouvé)
Alors j'ai essayé de trouver la bonne fonction au 'gout du jour' mais rien à faire, je ne trouve pas, enfin j'ai trouvé des exemples sur le net mais je n'arrive pas a mettre en place les exemples dans mon cas.

Merci.

Hors ligne

#2 12-11-2012 18:13:52

ManicoW
Cowrespondant
Lieu : Tours
Inscription : 08-05-2009
Messages : 192
Site Web

Re : [Résolu] Date + Heure au format français

Bonjour,

La solution est a rechercher du coté de preg_replace , ce qui devrait en théorie donner quelque chose dans ce genre (non testé !) :


return preg_replace('`([0-9]{4})-([0-9]{2})-([0-9]{2})`','\\3/\\2/\\1',$date);
 

@+
ManicoW


la v2, c'est tabou, on en viendra tous a bout

Hors ligne

#3 12-11-2012 18:40:38

dadou
Membre
Inscription : 12-11-2012
Messages : 3

Re : [Résolu] Date + Heure au format français

j'ai testé ton code fonctionne correctement.
mais bizarrement tu traite pas l'heure dans ton code si ? pourtant il affiche bien l'heure hmm pourquoi il affiche correctement l'heure si tu le traite pas dans le code ?

voici la fonction avec ton code :


function dateFrench($date)
{
return preg_replace('`([0-9]{4})-([0-9]{2})-([0-9]{2})`','\\3/\\2/\\1 à',$date);
}
 

par contre j'ai rajouté le 'à' a la fin... mais visuellement avec le 'à' le code me semble bizarre hmm il fonctionne, mais j'ai pas l'impression que tu traite l'heure je connais pas trop le php..

Hors ligne

#4 12-11-2012 19:49:14

ManicoW
Cowrespondant
Lieu : Tours
Inscription : 08-05-2009
Messages : 192
Site Web

Re : [Résolu] Date + Heure au format français

Re,

En fait je n'ai traité que le premier eregi de ton code, parce que pour que cela soit formateur, il faut aussi en appliquer un peu. Je te laisse donc le soin de modifier le deuxième eregi de ta fonction pour que le code soit complet smile

@+
ManicoW


la v2, c'est tabou, on en viendra tous a bout

Hors ligne

#5 12-11-2012 20:33:52

dadou
Membre
Inscription : 12-11-2012
Messages : 3

Re : [Résolu] Date + Heure au format français

j'ai réussi big_smile

merci à toi c'est cool, voici ma fonction :


// Formate une date de type YYYY-mm-dd (HH:ii:ss) au format jj/mm/aaaa ou jj/mm/aaaa à Hhm
function dateFrench($date)
{
if(($len_date=strlen($date)) == 10)
{
return preg_replace('`([0-9]{4})-([0-9]{2})-([0-9]{2})`','\\3/\\2/\\1',$date);
}
elseif($len_date == 19)
{
return preg_replace('`([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})`','\\3/\\2/\\1 à \\4h\\5',$date);
}
return false;
}
 

Hors ligne

#6 13-11-2012 08:36:23

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : [Résolu] Date + Heure au format français

j'me ferai jamais au regex big_smile:D



<?php
function dateFR2US($xdate){
    return implode('-',array_reverse(explode('/',$xdate)));
}

function dateFR2USWithTime($xdate){
    return implode('-',array_reverse(explode('/',current($dd=explode(' ',$xdate)))))." ".$dd[1];
}

function dateUS2FRWithTime($xdate){
    return implode('/',array_reverse(explode('-',current($dd=explode(' ',$xdate)))))." ".$dd[1];
}

   
    $dd1="06/07/2012";
    $dd2="06/07/2012 12:34:02";
   
    $dd3="2012-06-07 12:55:02";
   
   
    echo dateFR2US($dd1)."</br>";
    echo dateFR2USWithTime($dd2)."</br>";
    echo dateUS2FRWithTime($dd3);
?>
 

a++

Hors ligne

#7 13-11-2012 10:15:24

ManicoW
Cowrespondant
Lieu : Tours
Inscription : 08-05-2009
Messages : 192
Site Web

Re : [Résolu] Date + Heure au format français

Et pourtant les regex, qu'est ce que c'est pratique, notamment pour vérifier les entrées !

Ca me donne envie de faire un ptit bench ton truc là, faut que je tente ca tiens big_smile


la v2, c'est tabou, on en viendra tous a bout

Hors ligne

#8 13-11-2012 10:22:05

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : [Résolu] Date + Heure au format français

mouais, tu vas certainement gagner 2 nanosecondes big_smile big_smile

a++

Hors ligne

#9 13-11-2012 10:37:56

ManicoW
Cowrespondant
Lieu : Tours
Inscription : 08-05-2009
Messages : 192
Site Web

Re : [Résolu] Date + Heure au format français

2 nanosecondes + 2 nanosecondes + 2 nanosecondes... big_smile

J'ai essayé donc, de comparer le temps d’exécution des deux fonctions suivantes :


function dateFrench($date) {
  return preg_replace('`([0-9]{4})-([0-9]{2})-([0-9]{2}) ([0-9]{2}):([0-9]{2}):([0-9]{2})`','\\3/\\2/\\1 à \\4h\\5m\\6',$date);
}
 

function dateUS2FRWithTime($xdate){
  return implode('/',array_reverse(explode('-',current($dd=explode(' ',$xdate)))))." ".$dd[1];
}
 

Comme ça se joue en pasbeaucoupdemilisecondes, comme prévu, j'ai fait une boucle d'1 million d'itération pour chaque fonction. Et j'ai bien sur lancer cela a plusieurs reprises, histoire de voir si ce n'est pas un résultat hasardeux ou dut a une charge du serveur (quoi que là, y'a rien qui charge dessus).

Le résultat est à peu près toujours le même, la fonction a regex met environ 2.7 secondes là ou la fonction sans met environ 5.4 secondes, les regex sont donc bien plus rapide dans ce cas là smile

Pour être plus complet, ta solution a cependant un avantage du coté mémoire, 19Mo utilisé au lieu de 22Mo pour la fonction regex.

@+
ManicoW


la v2, c'est tabou, on en viendra tous a bout

Hors ligne

#10 13-11-2012 12:20:48

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : [Résolu] Date + Heure au format français

c'est vrai qu'on a tous les jours des millons de date a gérer big_smile big_smile

j'préfere ma fonction que est plus lisible big_smile

a++

Hors ligne

#11 13-11-2012 16:29:23

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : [Résolu] Date + Heure au format français

Saluton,
Ah ! l'éternel affrontement entre les tenants des imbuvables REGEX et les ceusses (dont je suis) qui y sont rédhibitoirement allergiques.
Il est vrai que j'ai de longue date l'habitude d'utiliser la souplesse des fonctions PHP pour ce genre de conversion de dates.
Ce qui est curieux, à mes yeux, c'est que, par ailleurs, la syntaxe de JQUERY n'est guère moins absconse et pourtant, elle n'a pas rebuté notre Pierrot, loin de là, puisqu'il a pour elle, et depuis longtemps, les yeux de Chimène.
Seigneur ! tes voies sont vraiment impénétrables !


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#12 13-11-2012 16:47:15

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : [Résolu] Date + Heure au format français

ha la !!!
suis pas d'accord !!!!

la saint axe (oui, c'est aujourd'hui big_smile ) de jquery est très limpide wink

a++

Hors ligne

#13 13-11-2012 16:54:35

ManicoW
Cowrespondant
Lieu : Tours
Inscription : 08-05-2009
Messages : 192
Site Web

Re : [Résolu] Date + Heure au format français

Ca dépend toujours de ce qu'on boit, ou plutôt de ce qu'on a été habitué a boire... Perso avec l'habitude, les regex me paraissent (généralement) limpides smile

Comme le disait il n'y a pas longtemps ici même un grand homme :

pri koloro kaj gusto evitendas disputo.

A mon sens dans ce cas il n'y a pas de meilleur choix, tant que ça fonctionne !


la v2, c'est tabou, on en viendra tous a bout

Hors ligne

Pied de page des forums