Convertir date en français depuis une variable

Fermé
zecka Messages postés 115 Date d'inscription samedi 16 février 2008 Statut Membre Dernière intervention 2 décembre 2015 - 2 oct. 2013 à 15:01
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 - 2 oct. 2013 à 19:15
Bonjour,

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




A voir également:

2 réponses

zecka Messages postés 115 Date d'inscription samedi 16 février 2008 Statut Membre Dernière intervention 2 décembre 2015 28
2 oct. 2013 à 18:53
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
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
2 oct. 2013 à 19:15
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 par
date()
non plus tant qu'on y est?
strftime
est juste une version locale aware de
date
, 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 fonction
datefr()
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.
0
ElementW Messages postés 4816 Date d'inscription dimanche 12 juin 2011 Statut Contributeur Dernière intervention 5 octobre 2021 1 228
2 oct. 2013 à 15:35
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 avec
setlocale(LC_ALL, "fr_FR");
, il est a noter que le nom "fr_FR" peut différer selon le système (
fr_FR.UTF-8
ou
fr_FR.utf8
).
Sachant que
date()
n'est pas locale aware, la fonction
strftime(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() ).
-1