Convertir date en français depuis une variable

zecka Messages postés 115 Date d'inscription   Statut Membre Dernière intervention   -  
ElementW Messages postés 4814 Date d'inscription   Statut Contributeur Dernière intervention   -
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   Statut Membre Dernière intervention   28
 
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 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
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 4814 Date d'inscription   Statut Contributeur Dernière intervention   1 223
 
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