Affichage d'une date en format français

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Affichage d'une date en format français

Re: Affichage d'une date en format français

par AB » 20 janv. 2010, 14:05

dixit la doc : http://php.net/manual/fr/function.strftime.php
%x Représentation préférée de la date, basée sur la locale, sans l'heure Exemple : 02/05/09 pour le 5 Février 2009
autant pour moi! j'ai regardé la doc pour comprendre ce que tu me proposait, et j'ai pas vu que c'était inversé...
c'est jamais bon de bosser aussi tard.
merci pour cette précision stealth35
C'est inversé quand tu ne précises pas le setlocale parce que dans ce cas, la configuration étant en anglais par défaut, la représentation préférée de la date - c'est à dire la plus communément utilisée en anglais - est au format 02/05/09 pour le 5 Février 2009.

Par contre si tu indiques setlocale(LC_TIME, 'french') avant d'appeler strftime avec le paramètre %x, tu obtiendras 05/02/2009 pour le 5 Février 2009 car la représentation la plus commune de la date en français est à ce format :wink:

Il aurait fallu deux exemples dans le manuel pour bien faire comprendre ce principe :)

Dans ton cas, puisque tu veux afficher l'année avec deux chiffres, ce raccourci ne peut pas te convenir. Remarque qu'il est plus intéressant de connaître le fonctionnement sans les raccourcis car tu peux faire exactement ce que tu veux. Si je voulais un tiret au lieu d'un slash pour séparer les éléments de la date, il suffirait d'écrire '%d-%m-%y' plutôt que '%d/%m/%y', etc.

Bon je crois qu'on a fait le tour de la question. Un petit résolu de ta part pour indiquer aux futurs lecteurs que ce sujet contient la réponse à ta question ?

Re: Affichage d'une date en format français

par jben30900 » 20 janv. 2010, 09:05

dixit la doc : http://php.net/manual/fr/function.strftime.php
%x Représentation préférée de la date, basée sur la locale, sans l'heure Exemple : 02/05/09 pour le 5 Février 2009
autant pour moi! j'ai regardé la doc pour comprendre ce que tu me proposait, et j'ai pas vu que c'était inversé...
c'est jamais bon de bosser aussi tard.
merci pour cette précision stealth35

Re: Affichage d'une date en format français

par stealth35 » 20 janv. 2010, 00:53

n'empêche, j'ai pas compris pourquoi en inserrant ta fonction les jours et les mois sont inversés; ça me parait étrange.
dixit la doc : http://php.net/manual/fr/function.strftime.php
%x Représentation préférée de la date, basée sur la locale, sans l'heure Exemple : 02/05/09 pour le 5 Février 2009
mais c'est de ma faute j'ai mal lu #-o

Re: Affichage d'une date en format français

par jben30900 » 20 janv. 2010, 00:28

merci à toi de m'avoir répondu, même si la forme de ton message est troublante : ni bonjour ni encouragement ni, comme je le stipulais humblement, une petite explication syntaxique quant à l'emplacement de cette fonction...
un pur informaticien, quoi! mais qui prend le temps de se ballader sur les forums et de sauver les embryons en détresse.(Y a des fois, je m'pose des questions sur la nature humaine...)
oui, c'est mon petit coté Indianna Jones, dsl :wink:
pas d'chichi, quoi; on va à l'essentiel! (en même temps, faut la tenir la cadence de 10 messages/jour)
n'empêche, j'ai pas compris pourquoi en inserrant ta fonction les jours et les mois sont inversés; ça me parait étrange.
Mais bon, lâches pas ton colt, cow-boy, j'aurais surement encore besoin d'un lucky luke un de ces quatre...
Merci et à bientôt peut-etre.

Re: Affichage d'une date en format français

par stealth35 » 20 janv. 2010, 00:03

merci à toi de m'avoir répondu, même si la forme de ton message est troublante : ni bonjour ni encouragement ni, comme je le stipulais humblement, une petite explication syntaxique quant à l'emplacement de cette fonction...
un pur informaticien, quoi! mais qui prend le temps de se ballader sur les forums et de sauver les embryons en détresse.(Y a des fois, je m'pose des questions sur la nature humaine...)
oui, c'est mon petit coté Indianna Jones, dsl :wink:

Re: Affichage d'une date en format français

par stealth35 » 19 janv. 2010, 23:50

C'était une plaisanterie :wink:
:mrgreen:

Re: Affichage d'une date en format français

par jben30900 » 19 janv. 2010, 23:32

<?php echo strftime('%x', strtotime($row_date_spectacle['date'])); ?>
désolé pour cette réponse tardive, mais j'avais 5 enfants à nourrir et coucher, alors tout de suite, ça prend un peu de temps...
merci à toi de m'avoir répondu, même si la forme de ton message est troublante : ni bonjour ni encouragement ni, comme je le stipulais humblement, une petite explication syntaxique quant à l'emplacement de cette fonction...
un pur informaticien, quoi! mais qui prend le temps de se ballader sur les forums et de sauver les embryons en détresse.(Y a des fois, je m'pose des questions sur la nature humaine...)
bon, bref, j'en ai déduit que ma requête "$row_extraction_dates['date']" devenait la variable de ta fonction "strftime('%x', strtotime($row_date_spectacle['date']))", mais (et peut etre me suis-je planté) l'affichage est curieux :
01/10/10 au lieu de 10/01/10.
ne sachant pas quoi faire de plus, j'ai essayé l'autre possibilité, celle d'AB, et ça marche nikel! en + ça m'a permis de mieux comprendre comment on defini les fonctions et comment on les appelle quand on en a besoin.(3000 messages en 3 ans, ça fait déjà une certaine expérience!...merci à toi pour ton investissement).
Merci aussi à nubnub de sa collaboration, mais honnetement je n'ai pas pris le temps de comprendre toute la logique de ta fonction car je ne m'interressais qu'à un probleme d'affichage et pas de calcul; j'y reviendrais quand je maitriserais un peu + ce nouveau langage.
Plus on est nombreux et plus on a de chance de trouver la solution adaptée - vive les communautés!

Re: Affichage d'une date en format français

par AB » 19 janv. 2010, 23:20

C'était une plaisanterie :wink:

Re: Affichage d'une date en format français

par stealth35 » 19 janv. 2010, 21:13

ouai, sauf si il cast en date dans la requete (mais c'est pas le cas)
Pas certain que ce soit une option prévue avec dreamweaver :lol:
je sais pas je connais pas dream, mais on peux toujours changer a la main genre,
FROM_UNIXTIME(date, '%d/%m/%Y') as date

Re: Affichage d'une date en format français

par AB » 19 janv. 2010, 21:04

ouai, sauf si il cast en date dans la requete (mais c'est pas le cas)
Pas certain que ce soit une option prévue avec dreamweaver :lol:

Re: Affichage d'une date en format français

par stealth35 » 19 janv. 2010, 20:33

@NuDub
S'il récupère une date sous cette forme '2010-02-06 00:00:00', c'est que c'est au format datetime et non pas un timestamp. Donc ta fonction ne pourrait pas être utilisée directement. Par ailleurs elle retourne un interval de temps et ce n'est pas ce qu'il demande.
ouai, sauf si il cast en date dans la requete (mais c'est pas le cas)

sinon la fonction strtotime fait pas mal de miracle on conversion string -> timestamp

Re: Affichage d'une date en format français

par AB » 19 janv. 2010, 20:08

@NuDub
S'il récupère une date sous cette forme '2010-02-06 00:00:00', c'est que c'est au format datetime et non pas un timestamp. Donc ta fonction ne pourrait pas être utilisée directement. Par ailleurs elle retourne un interval de temps et ce n'est pas ce qu'il demande.

Re: Affichage d'une date en format français

par NuDub » 19 janv. 2010, 19:28

Salut,
Je te propose une fonction que j'aime bien (qui n'est pas de mon cru, mais d'un tutoriels) :
function mepd($date)
{
        if(intval($date) == 0) return $date;
        
        $tampon = time();
        $diff = $tampon - $date;
        
        $dateDay = date('d', $date);
        $tamponDay = date('d', $tampon);
        $diffDay = $tamponDay - $dateDay;
        
        if($diff < 60 && $diffDay == 0)
        {
                return 'Il y &agrave; '.$diff.'s';
        }
        
        else if($diff < 600 && $diffDay == 0)
        {
                return 'Il y &agrave; '.floor($diff/60).'m et '.floor($diff%60).'s';
        }
        
        else if($diff < 3600 && $diffDay == 0)
        {
                return 'Il y &agrave; '.floor($diff/60).'m';
        }
        
        else if($diff < 7200 && $diffDay == 0)
        {
                return 'Il y &agrave; '.floor($diff/3600).'h et '.floor(($diff%3600)/60).'m';
        }
        
        else if($diff < 24*3600 && $diffDay == 0)
        {
                return 'Aujourd\'hui &agrave; '.date('H\hi', $date);
        }
        
        else if($diff < 48*3600 && $diffDay == 1)
        {
                return 'Hier &agrave; '.date('H\hi', $date);
        }
        
        else
        {
                return 'Le '.date('d/m/Y', $date).' &agrave; '.date('h\hi', $date).'.';
        }
}
Par contre la date est avec 4 nombres et il y a l'heure, mais bon après il faut voir pour adapter.

Donc ensuite pour l'utilisation en fait tu fais exemple :
mepd($var['champsSQL_timestamp']);
Assez pratique quand tu en as besoin dans différente page.

exemple d'affichage :
19/01/2010 06:33

Re: Affichage d'une date en format français

par AB » 19 janv. 2010, 18:31

ta le petit paramètre %x qui fais en %d/%m/%y , pas besion d'utilisé setlocale pour ce paramètre la (mais ca reste a verifier sur certaine config), sinon le faire avec date()
Oui effectivement normalement pas besoin d'utiliser setlocale pour ce paramètre. En même temps ça gêne pas et s'il lui prend de changer le format d'affichage...

Pour le %x, chez moi ça s'obstine à afficher l'année avec quatre chiffres contrairement à ce qu'indique le manuel, mystère #-o

EDIT : OK j'ai trouvé, %x fonctionne et affiche l'année avec deux chiffres si on ne spécifie pas le setlocale en français. Sinon il affiche l'année sur quatre chiffres. Un comportement un peu inattendu mais bon...

Re: Affichage d'une date en format français

par stealth35 » 19 janv. 2010, 18:14

ta le petit paramètre %x qui fais en %d/%m/%y , pas besion d'utilisé setlocale pour ce paramètre la (mais ca reste a verifier sur certaine config), sinon le faire avec date()