date en date lettre

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 : date en date lettre

par Mathieu68 » 08 nov. 2008, 12:17

et bien merci pour tout vraiment clair et ça marche parfaitement :D

par sadeq » 08 nov. 2008, 03:00

ou bien: date("w", strtotime($date));

Pour plus de pratique, voici une fonction que j'ai écrite à l'occasion, qui formate une date donnée selon un format donné.
Le principe est de pouvoir donner un format style "jj/mm/aaaa" ou "jjjj j mmmm aaaa" etc. et le programme doit remplacer les formats j, m et a par les parties adéquates de la date donnée.

Donc, si le symbole est j ou jj alors le remplacer par le n° du jour mais si c'est jjj ou jjjjj faudra remplacer par le nom du jour (abrégé ou complet)
Et même principe pour les symboles du mois, de l'année et pourquoi pas l'heure, minutes et secondes.

Programme : dateFormat.php
<?php
// excéute et retourne la date formatée selon la demande
echo dateFormat($_GET["date"]?$_GET["date"]:date("Y-m-d H:i:s"), $_GET["format"]?$_GET["format"]:"jjjj j mmmm aaaa h:m:s");

// fonctions du traitement
function dateFormat($date=null, $format="jjjj j mmmm aaaa h:m:s"){
	// absence du format = retourne la date telle qu'elle
	if (trim($date) == "") $date = date("Y-m-d H:i:s"); // date courante si vide
	if (trim($format) == "") return $date;

	// décomposition du format de la date (on remplace tout séparateur possible par espace pour unifier le critère de décomposition sans modifier le format d'origine)
	if (strchr($format, "/")!== FALSE)      {$format_modifié = str_replace("/", " ", $format);}
	else if (strchr($format, "-")!== FALSE) {$format_modifié = str_replace("-", " ", $format); }
	else if (strchr($format, ".")!== FALSE) {$format_modifié = str_replace(".", " ", $format); }
	else $format_modifié = $format;
	//
	$parties = explode(" ", $format_modifié); // décomposition du format selon le séparateur : espace

	// traitements des parties de la date : jour, mois, année et temps
	foreach ($parties as $i=>$partie){
		switch ($partie){
			// Jour
			case "j"     : $format = str_replace($partie, date("j", strtotime($date)), $format); break;
			case "jj"    : $format = str_replace($partie, date("d", strtotime($date)), $format); break; 
			case "jjj"   : $format = str_replace($partie, substr(getJourFr(date("w", strtotime($date))), 0, 3), $format); break;
			case "jjjj"  : $format = str_replace($partie, getJourFr(date("w", strtotime($date))), $format); break;
			// Mois
			case "m"     : $format = str_replace($partie, date("n", strtotime($date)), $format); break;
			case "mm"    : $format = str_replace($partie, date("m", strtotime($date)), $format); break;
			case "mmm"   : $format = str_replace($partie, substr(getMoisFr(date("m", strtotime($date))), 0, 3), $format); break;
			case "mmmm"  : $format = str_replace($partie, getMoisFr(date("m", strtotime($date))), $format); break;
			// Année
			case "aa"    : $format = str_replace($partie, date("y", strtotime($date)), $format); break;
			case "aaaa"  : $format = str_replace($partie, date("Y", strtotime($date)), $format); break;
			// temps
			case "h" 	 : $format = str_replace($partie, date("H A", strtotime($date)), $format); break;
			case "h:m"   : $format = str_replace($partie, date("H:i A", strtotime($date)), $format); break;
			case "h:m:s" : $format = str_replace($partie,date("H:i:s A", strtotime($date)), $format); break;
		}
	}
	// retourne le format modifié par la date formatée
	return $format;
}
// fonction de traduction des noms jours et mois en français
function getJourFR($j){
	switch ($j){
		case 1: return "Lundi";
		case 2: return "Mardi";
		case 3: return "Mercredi";
		case 4: return "Jeudi";
		case 5: return "Vendredi";
		case 6: return "Samedi";
		default: return "Dimanche";
	}
}
function getMoisFR($m){
	switch ($m){
		case  2: return "Février";
		case  3: return "Mars";
		case  4: return "Avril";
		case  5: return "Mai";
		case  6: return "Juin";
		case  7: return "Juillet";
		case  8: return "Août";
		case  9: return "Septembre";
		case 10: return "Octobre";
		case 11: return "Novembre";
		case 12: return "Décembre";
		default: return "Janvier";
	}
}
?>
Pour la tester, taper les jeux d'essai suivants:
dateFormat.php?date=2008-11-8 02:00&format=jjjj j mmmm aaaa h:m:s
dateFormat.php?date=2008-11-8 02:00&format=jj/mm/aaaa h:m:s
dateFormat.php?date=2008-11-8 02:00&format=jj-mm-aa h:m
dateFormat.php?date=2008-11-8 02:00&format=jj.mm.aaaa h
ou encore : dateFormat.php?date=2008-11-8 02:00&format=Le jjjj j mmmm aaaa à h:m
etc.

Par contre, les séparateurs pris en charge dans cette version sont limités à : espace / - et .
Et seulement les : pour les heures

par chrislabricole » 08 nov. 2008, 02:45

Ah ok, bon alors dans ce cas là, tu doit utiliser mktime()
$jour_fr = array ('dimanche', 'lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi'); 
$date = "2008-08-08";
list($annee, $mois, $jour) = explode('-', $date);

echo $jour_fr[date("w", mktime(0, 0, 0, $mois, $jour, $annee))];
normalement ça devrait marcher :)
Tu peux même en faire une fonction ;)

par Mathieu68 » 08 nov. 2008, 02:17

moi ce qui m'intéresse c'est le date('w') car avec ça j'ai un chiffre entre 0 et 6 qui détermine le jour de la semaine et donc je peux afficher le jour en faisant le lien avec un tableau.

Moi problème est ce W doit être calculer en fonction de l'année et du mois. Les jours ne sont pas des mois. :D

Je sais pas si je suis assez clair.
Pour faire simple
<?php

$date = "2008-08-08"; //ici c'est un exemple en vrai je la prends dans la base de donnée
$jour ="date('w',$date)"; //affiche le jour en chiffre de 0 à 6 en fonction de $date

$jour_fr = array ('dimanche','lundi','mardi','mercredi','jeudi','vendredi','samedi','dimanche');
echo $jour_fr[$jour];

?>

par chrislabricole » 08 nov. 2008, 02:04

Regarde, inspire toi de ça

T'as juste les slashes à changer, l'ordre, et se qu'il y a dans date() (D d M)

date en date lettre

par Mathieu68 » 08 nov. 2008, 00:49

Bonsoir,

Actu du 05/11/2008

et je voudrais Actu du Jeudi 11 Novembre 2008 en sachant que l'info est prise dans la base de donnée.

dans la base de donnée l'info est stocké dans un champ date 2008-11-05
J'ai essayé de faire $mois = date ("w",$date); mais cela ne marche pas et $date contient 2008-11-05 dans notre cas.

Merci de votre aide :)