Convertir date en français depuis une variable
zecka
Messages postés
129
Statut
Membre
-
ElementW Messages postés 5690 Statut Contributeur -
ElementW Messages postés 5690 Statut Contributeur -
Bonjour,
Mon site est fait sur wordpress, j'utilise le plugin Advanced Custom Field.
Pour récupérer ma date je fait ca:
si j'affiche la variable ca me retourne: 20131002
J'aimerai l'afficher dans ce format:
mercredi, 2 octobre 2013
Comment faire une fonction qui me converti tout ca?
J'aimerai qu'en écrivant ca:
Il me retourne ca:
mercredi, 2 octobre 2013
Mon site est fait sur wordpress, j'utilise le plugin Advanced Custom Field.
Pour récupérer ma date je fait ca:
$date = get_field('start-date');
si j'affiche la variable ca me retourne: 20131002
J'aimerai l'afficher dans ce format:
mercredi, 2 octobre 2013
Comment faire une fonction qui me converti tout ca?
J'aimerai qu'en écrivant ca:
$date = get_field('start-date');
datefr($date);
Il me retourne ca:
mercredi, 2 octobre 2013
2 réponses
-
Je ne passe pas par la fonction strftime.
Enfaite c'est pour un blog wordpress, j'ai créer des custom post type pour les événement et ya un champs personnalisé pour la date avec un date picker.
Il me retourne en texte donc pour l'instant j'ai pas de fonction mais j'ai trouvé un solution. Le problème c'est qu'à chaque endroit ou je veu afficher une date je dois refaire la manip et c'est lourd. Je pense qu'un fonction serai plus adapter. De plus j'arrive pas à le metre en textuel.
Voici mon code actuel:
<?php
$date = get_field('start-date');
// $date = 19881123 (23/11/1988)
// extract Y,M,D
$y = substr($date, 0, 4);
$m = substr($date, 4, 2);
$d = substr($date, 6, 2);
// create UNIX
$time = strtotime("{$d}-{$m}-{$y}");
// format date
$start_date = date('d/m/Y', $time);
$date2 = get_field('end-date');
// $date = 19881123 (23/11/1988)
// extract Y,M,D
$y = substr($date2, 0, 4);
$m = substr($date2, 4, 2);
$d = substr($date2, 6, 2);
// create UNIX
$time = strtotime("{$d}-{$m}-{$y}");
// format date
$end_date = date('d/m/Y', $time);
echo $end_date; // ?>
Comment faire pour obtenir la date sous ce format: mercredi, 2 octobre 2013-
Ce que je t'ai dit correspond à ce que tu demandes: ton
strtotime
renvoie une date au format UNIX.date()
prends le format que tu lui demandes, et un timestamp optionnel pour préciser un temps autre que la date actuelle. Tu cherches bien à obtenir une date en français, n'est-ce pas? Alors met la locale en français et remplace ton date() par un strftime().
"Je ne passe pas par la fonction strftime.": et tu ne passes pas pardate()
non plus tant qu'on y est?strftime
est juste une version locale aware dedate
, et fait partie de la bibliothèque standard de PHP, au même titre que sa fonction conjointe pas très au courant des langues; donc:
- soit tu l'utilises
- soit tu créé ta propre fonctiondatefr()
avec tous les algorithmes qu'il faut pour trouver le jour de la semaine (pro tip: les années bissextiles sont... perturbantes) et tout le tralala.
-
-
Salut, la fonction
date()
n'est pas locale aware, c-est à dire qu'elle ne prends en compte aucun paramètre de langue.
De plus, PHP est en général configuré pour une locale anglaise (en_US
)...
La solution est donc de paramétrer la langue avecsetlocale(LC_ALL, "fr_FR");
, il est a noter que le nom "fr_FR" peut différer selon le système (fr_FR.UTF-8
oufr_FR.utf8
).
Sachant quedate()
n'est pas locale aware, la fonctionstrftime(string $format, int $timestamp)
a été créée pour faire la même chose avec une prise en compte de la langue, mais il faut obligatoirement spécifier un format à la main; pour la date en français que tu cherches c'est%A, %e %B %G
(les codes sont décrits sur la page de doc de strftime() ).