|
Voir le sujet précédent :: Voir le sujet suivant
|
| Auteur |
Message |
| |
|
h4ni WRInaute impliqué

Inscrit le: 11 Juil 2005 Messages: 463
|
Posté le : Mer Avr 09, 2008 13:00 Sujet du message: [Resolu] php: changer le format de la date |
|
|
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
Inscrit le: 19 Déc 2007 Messages: 15
|
Posté le : Mer Avr 09, 2008 13:05 Sujet du message: [Resolu] php: changer le format de la date |
|
|
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

Inscrit le: 23 Nov 2005 Messages: 2752 Localisation: Lyon, capitale des Gaules
|
Posté le : Mer Avr 09, 2008 13:06 Sujet du message: [Resolu] php: changer le format de la date |
|
|
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

Inscrit le: 23 Déc 2003 Messages: 12859 Localisation: Toulouse
|
Posté le : Mer Avr 09, 2008 13:09 Sujet du message: [Resolu] php: changer le format de la date |
|
|
| Code: |
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
Inscrit le: 19 Déc 2007 Messages: 15
|
Posté le : Mer Avr 09, 2008 13:23 Sujet du message: [Resolu] php: changer le format de la date |
|
|
comme chacun y va de son code
| Code: |
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

Inscrit le: 23 Déc 2003 Messages: 12859 Localisation: Toulouse
|
Posté le : Mer Avr 09, 2008 13:26 Sujet du message: [Resolu] php: changer le format de la date |
|
|
disons que moi c'est la fonction "retourne moi la date complete en francais"
ex : "jeudi 12 Janvier 1967 à 8h32" |
|
| |
|
 |
UsagiYojimbo WRInaute accro

Inscrit le: 23 Nov 2005 Messages: 2752 Localisation: Lyon, capitale des Gaules
|
Posté le : Mer Avr 09, 2008 13:28 Sujet du message: [Resolu] php: changer le format de la date |
|
|
| 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
Inscrit le: 19 Déc 2007 Messages: 15
|
Posté le : Mer Avr 09, 2008 13:33 Sujet du message: [Resolu] php: changer le format de la date |
|
|
et ceci:
| Code: |
| strftime("Le %A %d %B %Y a %Hh%M",$my_date); |
ca fait le café?
et du coup une classe Date est rapidement codée  |
|
| |
|
 |
UsagiYojimbo WRInaute accro

Inscrit le: 23 Nov 2005 Messages: 2752 Localisation: Lyon, capitale des Gaules
|
Posté le : Mer Avr 09, 2008 13:35 Sujet du message: [Resolu] php: changer le format de la date |
|
|
| steph2908 a écrit: |
et ceci:
| Code: |
| strftime("Le %A %d %B %Y a %Hh%M",$my_date); |
ca fait le café?
et du coup une classe Date est rapidement codée  |
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é

Inscrit le: 11 Juil 2005 Messages: 463
|
Posté le : Mer Avr 09, 2008 13:36 Sujet du message: [Resolu] php: changer le format de la date |
|
|
| Merci a vous tous , j'ai fini par utiliser le code de steph |
|
| |
|
 |
steph2908 Nouveau WRInaute
Inscrit le: 19 Déc 2007 Messages: 15
|
Posté le : Mer Avr 09, 2008 13:38 Sujet du message: [Resolu] php: changer le format de la date |
|
|
| 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é

Inscrit le: 30 Avr 2006 Messages: 625 Localisation: Montpellier
|
Posté le : Mer Avr 09, 2008 15:27 Sujet du message: [Resolu] php: changer le format de la date |
|
|
| 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

Inscrit le: 23 Déc 2003 Messages: 12859 Localisation: Toulouse
|
Posté le : Mer Avr 09, 2008 15:29 Sujet du message: [Resolu] php: changer le format de la date |
|
|
| vous m'expliquerai sur un mutualisé comment vous arrivez au même résultat que moi , avec une date en francais |
|
| |
|
 |
steph2908 Nouveau WRInaute
Inscrit le: 19 Déc 2007 Messages: 15
|
Posté le : Mer Avr 09, 2008 15:37 Sujet du message: [Resolu] php: changer le format de la date |
|
|
| 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é

Inscrit le: 10 Jan 2004 Messages: 332
|
Posté le : Mer Avr 09, 2008 15:53 Sujet du message: Re: [Resolu] php: changer le format de la date |
|
|
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 |
|
| |
|
 |
| |
|
|