Aide passage date en 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 : Aide passage date en français

par Cobra52 » 07 nov. 2007, 13:38

Comme je l'ai indiqué plus haut, je modifie un script "tout fait" que j'ai eu sur le net :wink:

En effet, il semblerait que cela soit une histoire de fuseau horaire.

Je te remercie Ryle :D

Je mets ce topic en "Résolu"

Merci à tous.

par Ryle » 07 nov. 2007, 13:27

D'ailleur, la variable $offset_time sert à quoi ?
Euh... ben... c'est ta fonction hein... y a que toi qui peut savoir ce que tu voulais qu'elle fasse ;)

Plus sérieusement, on peut supposer comme le timestamp est exprimé en seconque que TIME_OFFSET*60*60 est un nombre d'heure (pouvant être négatif) à ajouter, probablement pour régler le fuseau horaire ou autre... Tu peux afficher la valeur de ta constante TIME_OFFSET pour voir ce qu'elle contient :)

Et si tu veux le conserver malgré tout, tu peux très bien modifier ton $timestamp avant de l'utiliser pour définir tes variables $affiche_date :)

par Cobra52 » 07 nov. 2007, 13:03

Merci Ryle :wink: et à tous les autres :)

Tout simplement
$display_output = $date_format;
Bon, par contre, je perds le $offset_time, mais comme la valeure de $display_output retournée est nickel, je ne touche plus à rien :D

D'ailleur, la variable $offset_time sert à quoi ?

par Ryle » 07 nov. 2007, 12:55

Procède doucement, regarde bien ce que tu demandes de faire à php et n'hésite pas à tester étape par étape tes valeurs à coup de echo :)

Regarde ce que tu stockes dans $date_format (et que tu utilises ensuite pour définir la valeur de $display_output : date($date_format, $offset_time)) ... est-ce logique ? est-ce que cela correspond aux paramètres attendus ? ...

par Cobra52 » 07 nov. 2007, 12:47

Donc j'ai mis "n" à la palce "F" et ça me retourne un truc pas possible :
31 oc30obWed, 7 Nov 2007 11:47:32 +0100e 2007 09:08:58
On dirait que ça mélange la date du timestamp et la date d'aujourd'hui.

par Ryle » 07 nov. 2007, 12:20

Nope, au moment où tu fais date('F', $timestamp), toi tu veux la valeur de ton tableau $mois_fr associée au numéro du mois (1 => 'janvier', 2 => 'février' ...) ;)

et effectivement les index 07 et 7 ne sont pas les mêmes :)

par Cobra52 » 07 nov. 2007, 12:13

Mais je ne veux pas le mois en numérique, je le veux en alphabétique et en entier, donc c'est bien F.

par orgerix » 07 nov. 2007, 12:05

F renvoie le nom du moi en anglais. COmme ton tableau est initialisé sur le numéro du omi, il faut que tu remplace F par n, pour avoir le numéro sans zéro intial.

par Cobra52 » 07 nov. 2007, 11:53

Voila, j'ai modifié la fonction show_date() :
function show_date ($timestamp, $show_time = true)
{
	(string) $display_output = null;
	
	$mois_fr = Array(1=>'janvier', 'février', 'mars', 'avril', 'mai', 'juin', 'juillet', 'août', 'septembre', 'octobre', 'novembre', 'décembre');
	$affiche_date = date('d', $timestamp)." ".$mois_fr[date('F', $timestamp)]." ".date('Y', $timestamp);
	$affiche_datetime = date('d', $timestamp)." ".$mois_fr[date('F', $timestamp)]." ".date('Y', $timestamp)." ".date('H:i:s', $timestamp);
	
	if ($timestamp)
	{
		$date_format = ($show_time) ? $affiche_datetime : $affiche_date;

		$offset_time = $timestamp + (TIME_OFFSET * 60 * 60);		

		$display_output = date($date_format, $offset_time);
	}
	else
	{
		$display_output = GMSG_NA;
	}
	return $display_output;  
}
J'ai remplacé les 2 constantes DATETIME_FORMAT et DATE_FORMAT respectivement par $affiche_datetime et $affiche_date, pour pouvoir me servir du tableau des mois en français.

Malheureusement je me retrouve avec cet affichage "07 2007 10:44:42" (par exemple), il me manque le mois "novembre" ! :roll:

par Power Web » 07 nov. 2007, 02:15

Salut, moi j'avais fais ça avec un array très simple ^^ comme Ryle
<?php
$temps = time();

// JOURS
$jours = array('Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi');
$jours_numero = date('w', $temps); // Numero du jour dans la SEMAINE
$jours_complet = $jours[$jours_numero];
// Numero du jour
$NumeroDuJour = date('d', $temps); // Numero du jour dans le MOIS


// MOIS
$mois = array('', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai',
'Juin', 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
$mois_numero = date("m", $temps); // Numero du mois dans L'ANNEE
$mois_complet = $mois[$mois_numero];

// ANNEE
$annee = date("Y", $temps); // Année (2007, 2008...)

// Affichage DATE
echo $jours_complet . $NumeroDuJour . $mois_complet . $annee;
Aurevoir et bon courage ;)

par Cobra52 » 06 nov. 2007, 19:27

Pas mieux :?

Effectivement, il doit me manquer quelque chose :lol:

par Ryle » 06 nov. 2007, 18:12

ah bah euh.. ouais... vraissemblablement :)

Et si tu remplaces LC_TIME par LC_ALL ?

sinon bah il doit te manquer l'option français dans la conf du système....

par Cobra52 » 06 nov. 2007, 18:05

J'ai remplacé %A par %B
Et j'ai ça chez moi :
November in Finnish is November, in French November and in German November.
Il doit me manquer quelque chose, non ? :lol:

par Ryle » 06 nov. 2007, 17:39

Ce ne sont pas des fonctions mais des constantes :) Donc selon si ta variable $showtime est vraie ou pas tu vas affecter une valeur ou l'autre à $date_format (qu'il te suffit d'afficher si tu veux voir la différence sans avoir à chercher dans la doc)

Concernant strftime(), pourquoi ne pas essayer l'exemple donné et voir le résultat ? cela t'aidera à comprendre comment cela fonctionne :)
<?php
setlocale(LC_TIME, "C");
echo strftime("%A");
setlocale(LC_TIME, "fi_FI");
echo strftime(" in Finnish is %A,");
setlocale(LC_TIME, "fr_FR");
echo strftime(" in French %A and");
setlocale(LC_TIME, "de_DE");
echo strftime(" in German %A.\n");
?> 
Il ne te reste plus ensuite qu'à renseigner le second paramètre avec ton timestamp et modifier le format pour obtenir le mois au lieu du jour de la semaine :)

par Cobra52 » 06 nov. 2007, 17:20

Bon ben, ze suis à la ramasse, complet :?

Concernant setlocale() et strftime() je suis allé voir, mais je n'y comprend rien :lol:

D'autre part, la valeur de $timestamp peut me retourner soit une date sous la forme 06 november 2007 16:15:25 ou simplement 06 november 2007 (en fonction de ce qui est indiqué dans $timestamp), je pense que c'est pour cette raison qu'il y a :
$date_format = ($show_time) ? DATETIME_FORMAT : DATE_FORMAT;
Par contre, je n'arrive pas à trouver ces 2 fonctions DATETIME_FORMAT et DATE_FORMAT, sinon j'aurais peut-être pu agir directement sur elles.

Bon, je vais encore tripatouiller le code :D

Merci à vous :wink: