[Resolu] php: changer le format de la date

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


h4ni
WRInaute impliqué
WRInaute impliqué
 
Messages: 476
Inscription: Lun Juil 11, 2005 17:32

[Resolu] php: changer le format de la date

Message le Mer Avr 09, 2008 13:00

Bonjour
j'utilise un script php qui génère une liste des derniers articles dans un fichier xml , dans ce dernier j'ai la date de creation de l'article qui es sous forme de
<time>2008-04-09 00:00:00</time>
j'aimerai bien convertir cette date pour obtenir
<time>09-04-2008 00:00:00</time>
quelqu'un a une idée?

Merci d'avance
Dernière édition par h4ni le Mer Avr 09, 2008 13:39, édité 1 fois.

steph2908
Nouveau WRInaute
 
Messages: 15
Inscription: Mer Déc 19, 2007 15:01

Message le Mer Avr 09, 2008 13:05

voici un cheminement possible:

1ere etape : convertir en timestamp ta date (mktime)
2eme etape: afficher dans le format que tu souhaite (date ou strftime)


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 5189
Inscription: Mer Nov 23, 2005 10:38

Message le Mer Avr 09, 2008 13:06

Un truc à base d'explode devrait faire ce que tu veux :

1) un premier explode sur la chaine "" pour récupérer la première partie de la date
2) un second explode sur la chaine "-" pour récupérer les trois parties de la date

Et ensuite tu recomposes le tout comme bon te semble.


e-kiwi
Modérateur
Modérateur
 
Messages: 13859
Inscription: Mar Déc 23, 2003 9:04

Message le Mer Avr 09, 2008 13:09

Code: Tout sélectionner
function datefr($date_sql)
   {
// Declaration du tableau des noms de jours en Francais
  //-------- ici
 
$j_fr['Sunday'] = "Dimanche";
  $j_fr['Monday'] = "Lundi";
  $j_fr['Tuesday'] = "Mardi";
  $j_fr['Wednesday'] = "Mercredi";
  $j_fr['Thursday'] = "Jeudi";
  $j_fr['Friday'] = "Vendredi";
  $j_fr['Saturday'] = "Samedi";
 
  // Declaration du tableau des noms de jours en Francais
  $m_fr['01'] = "Janvier";
  $m_fr['02'] = "Fevrier";
  $m_fr['03'] = "Mars";
  $m_fr['04'] = "Avril";
  $m_fr['05'] = "Mai";
  $m_fr['06'] = "Juin";
  $m_fr['07'] = "Juillet";
  $m_fr['08'] = "Aout";
  $m_fr['09'] = "Septembre";
  $m_fr['10'] = "Octobre";
  $m_fr['11'] = "Novembre";
  $m_fr['12'] = "Decembre";
 
  $la_date = explode(' ', $date_sql); // on decompose la date SQL
  if (isset($la_date['1'])) $heure_sql= explode(':', $la_date['1']); // On prend la partie heure
  $date_sql = explode('-', $la_date[0]); // On prend la partie date
 
 
  if (substr($date_sql[2], 0, 1) == '0' ) // On verifie si le 1er caractere est 0 dans le numero du mois
  {
  // si oui alors on supprime le 1er caractere
  $date_sql[2] = substr($date_sql[2], 1, strlen($date_sql[2]) -1);
  }
 
  if (isset($heure_sql[0])) $heure = $heure_sql[0]; // La variable de l'heure
  if (isset($heure_sql[1])) $minutes = $heure_sql[1]; // La variable des minutes
  if (isset($heure_sql[2])) $secondes = $heure_sql[2]; // la variable des secondes
 
  $annee = $date_sql[0]; // La variable des annees
  $num_mois = $date_sql[1]; // La variable du numero du mois
  $nom_mois = $m_fr[$num_mois]; // La variable du mois en francais
  $num_jour = $date_sql[2]; // Le numero du jour
  if (($num_jour < 10) and ($num_jour > 0)) $num_jour="0".$num_jour;
  $nom_jour = $j_fr[date("l", mktime(0, 0, 0, $num_mois, $num_jour, $annee))];
// Le nom du jour en francais
 
  //$date = "$nom_jour $num_jour $nom_mois $annee";
  $date = "$num_jour-$num_mois-$annee"; // On forme la date
  if (isset($heure_sql[0]))  $heure = "à $heure:$minutes:$secondes"; // On forme l'heure
  else $heure='';
  $date_fr=$date;
  if ($heure != '::') $date_fr= $date_fr.' '.$heure;
 
  //retour de cette variable
  return $date_fr;
}


à adapter si tu veux le nom ou numéro de jour par exemple

steph2908
Nouveau WRInaute
 
Messages: 15
Inscription: Mer Déc 19, 2007 15:01

Message le Mer Avr 09, 2008 13:23

comme chacun y va de son code
Code: Tout sélectionner
setlocale (LC_TIME, "fr@euro");
$val = explode(" ",$my_date);
$date = explode("-",$val[0]);
$time = explode(":",$val[1]);
$timestamp=mktime($time[0],$time[1],$time[2],$date[1],$date[2],$date[0]);

strftime("%d %B %Y",$timestamp);


en 5 lignes tu as la meme chose.. et c'est multilingue tres facilement...
vive la fonction strftime (http://fr3.php.net/manual/fr/function.strftime.php)


e-kiwi
Modérateur
Modérateur
 
Messages: 13859
Inscription: Mar Déc 23, 2003 9:04

Message le Mer Avr 09, 2008 13:26

disons que moi c'est la fonction "retourne moi la date complete en francais"

ex : "jeudi 12 Janvier 1967 à 8h32"


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 5189
Inscription: Mer Nov 23, 2005 10:38

Message le Mer Avr 09, 2008 13:28

e-kiwi a écrit:disons que moi c'est la fonction "retourne moi la date complete en francais"

ex : "jeudi 12 Janvier 1967 à 8h32"


sauf qu'en utilisant LC_TIME, tu as possibilité de t'affranchir de tes tableaux de paramètrages, qui contiennent du coup le libellé du jour, du mois, etc.

steph2908
Nouveau WRInaute
 
Messages: 15
Inscription: Mer Déc 19, 2007 15:01

Message le Mer Avr 09, 2008 13:33

et ceci:
Code: Tout sélectionner
strftime("Le %A %d %B %Y a %Hh%M",$my_date);

ca fait le café? :twisted:

et du coup une classe Date est rapidement codée :P


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 5189
Inscription: Mer Nov 23, 2005 10:38

Message le Mer Avr 09, 2008 13:35

steph2908 a écrit:et ceci:
Code: Tout sélectionner
strftime("Le %A %d %B %Y a %Hh%M",$my_date);

ca fait le café? :twisted:

et du coup une classe Date est rapidement codée :P


Sauf que ton strftime il nécessite au préalable de modifier la constante LC_TIME. Sinon ça affiche en anglais...

Par contre je préfère aussi procéder comme ça.


h4ni
WRInaute impliqué
WRInaute impliqué
 
Messages: 476
Inscription: Lun Juil 11, 2005 17:32

Message le Mer Avr 09, 2008 13:36

Merci a vous tous , j'ai fini par utiliser le code de steph

steph2908
Nouveau WRInaute
 
Messages: 15
Inscription: Mer Déc 19, 2007 15:01

Message le Mer Avr 09, 2008 13:38

UsagiYojimbo a écrit:Sauf que ton strftime il nécessite au préalable de modifier la constante LC_TIME. Sinon ça affiche en anglais...


évidemment mais le fichier de traduction pour chaque langue se limite a quelques lignes...
la LC_TIME et le (ou les) format de sortie désiré que l'on peut variabiliser ;)

FloBaoti
WRInaute passionné
WRInaute passionné
 
Messages: 684
Inscription: Dim Avr 30, 2006 18:42

Message le Mer Avr 09, 2008 15:27

Le explode consomme des ressources pour rien, vu que la chaine d'entrée fait toujours la même taille et on sait exactement où sont les informations (ex: année à partir du caractère 0 et sur 4 caractères)... substr()


e-kiwi
Modérateur
Modérateur
 
Messages: 13859
Inscription: Mar Déc 23, 2003 9:04

Message le Mer Avr 09, 2008 15:29

vous m'expliquerai sur un mutualisé comment vous arrivez au même résultat que moi , avec une date en francais

steph2908
Nouveau WRInaute
 
Messages: 15
Inscription: Mer Déc 19, 2007 15:01

Message le Mer Avr 09, 2008 15:37

e-kiwi a écrit:vous m'expliquerai sur un mutualisé comment vous arrivez au même résultat que moi , avec une date en francais


fonctionne sur un plan ovh...

dudo
WRInaute impliqué
WRInaute impliqué
 
Messages: 367
Inscription: Sam Jan 10, 2004 17:28

Re: [Resolu] php: changer le format de la date

Message le Mer Avr 09, 2008 15:53

Bonjour,

Je rebondis sur cette discussion, car je mets en place une api et j'ai un souci aves les dâtes sous PHP5

echo " DATE: ".echo " DATE: ".$expo->date."\n" ;
la variable me fournit directemement un affichage US
du type : Wed, 02 Apr 2008 23:15:17 GMT

Comment je peux manipuler $expo->date pour obtenir
un affichage français svp ?

J'ai bien essayé
// Définit le fuseau horaire par défaut à utiliser. Disponible depuis PHP 5.1
date_default_timezone_set('UTC');

sans résultats

merci


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités