Obtenir le jour à partir du numero du jour dans la semaine

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 : Obtenir le jour à partir du numero du jour dans la semaine

par Hells_Dark » 26 avr. 2007, 14:51

	public function afficherSemaine($semaine, $annee) {
		// On affiche la semaine et ses différents evenements
		
		$chaine = '<div class="calSemaine">';
		$chaine .= '<table><tr><th>Heure</th>';
		$nbSemaine = $semaine -1;
		for ($j=0;$j<=6;$j++){
			$jour = date('d/m', strtotime($annee.'-01-01 +'.$nbSemaine.' WEEK '.$convNumJour[$j]));
			$chaine .= '<th>'.$jour.'</th>';
		}
		$chaine .= '</tr></table>';
		
		for ($h=8;$h<20;$h++){
			$chaine .= '<table>'."\n";
			for ($m=00;$m<60;$m+=15){
				$chaine .= '<tr>';
				$chaine .= '<td>'.sprintf('%02d',$h).' : '.sprintf('%02d',$m).'</td>';
				for ($j=1;$j<=7;$j++){
					$mois = date('m', strtotime('2007-01-01 +'.$nbSemaine.' WEEK '.$convNumJour[$j]));
					$jour = date('d', strtotime('2007-01-01 +'.$nbSemaine.' WEEK '.$convNumJour[$j]));
					$chaine .= '<td><a href="calendrier.php?mode=addEv&heure='.$h.'&min='.$m.'&mois='.$mois.'&jour='.$jour.'&annee='.$annee.'">add</a></td>';
				}
				$chaine .= "</tr>\n";	
			}
			$chaine .= "</table>\n";
		}
		$chaine .= '</div>';
		return $chaine; 
	}
}
Et hop :)

par Hells_Dark » 26 avr. 2007, 14:15

Héhé, en effet :P
C'est parfait :)

J'ai compris la toute puissance de strtotime ^^

par Jules Petibidon » 26 avr. 2007, 14:08

non :)

2007-01-01 => 1er janvier 2007. date de référence pour le reste de l'année.
+51 WEEK => bah on ajoute 51 semaines à la date de reference.
TUESDAY => on demande le mardi

résultat : tu me dois des cadeaux ;)

par Hells_Dark » 26 avr. 2007, 14:04

Merci beaucoup

J'ai décidément un peu de mal..
Je comprends pas bien ta commande :
<?php echo date( 'D d/m/Y' , strtotime( '2007-01-01 +51 WEEK TUESDAY' ) ) . '<br />';

Déjà, je comprends pas très bien l'histoire du décalage (+xx), et ton format : 2007-01-01, AAAA-MM-JJ ?
Car mois, je n'ai pas JJ mais juste la position du jour dans la semaine (lundi, mardi, mercredi..) ni le numéro du mois d'ailleurs..

Je n'ai que AA (année) et SS (numéro de la semaine) et le jour (MONDAY, THURSDAY..)

Je vais faire des tests :P
Et surtout, je vais faire des recherches sur le format des dates :P

par Jules Petibidon » 26 avr. 2007, 13:39

pourquoi faire simple quand on peut faire compliqué ? ;)
echo date( 'D d/m/Y' , strtotime( '2007-01-01 +51 WEEK TUESDAY' ) ) . '<br />';

par Hells_Dark » 26 avr. 2007, 12:57

j'y avais pas pensé mais en fait,
il me faut le numéro de jour et du mois, uniquement grace à l'année et au numéro de la semaine :/

Ca risque de me compliquer encore la tache..

:arrow:
 date(' d m ',strtotime($numeroSemaine.' - '.$annee))
J'avoue que je seche encore un peu..


Voici un bout de code pour que vous compreniez mieux mon but :
(après, ya la gestion des taches & co)
public function afficherSemaine($semaine, $annee) {
		for ($h=8;$h<20;$h++){
			$chaine .= '<table>'."\n";
			for ($m=00;$m<60;$m+=15){
				$chaine .= '<tr>';
				$chaine .= '<td>'.sprintf('%02d',$h).' : '.sprintf('%02d',$m).'</td>';
				for ($j=0;$j<=6;$j++){
					$mois = '';
					$jour = '';
		
					$chaine .= '<td><a href="calendrier.php?mode=addEv&heure='.$h.'&min='.$m.'&mois='.$mois.'&jour='.$jour.'&annee='.$annee.'">add</a></td>';

				}
				$chaine .= "</tr>\n";	
			}
			$chaine .= "</table>\n";
		}
return $chaine
}

par Hells_Dark » 26 avr. 2007, 12:26

Voui.. tu as sans doute raison.
je vais essayer avec des tableaux de conversion.

Merci

Mais strtotime sait aussi fonctionner avec certains formats avec des chiffres, c'est pour ça que je me demandais si il n'y avais pas plus simple.

par naholyr » 26 avr. 2007, 12:24

Ne te torture pas à vouloir utiliser un format qui attend des lettres en lui donnant des chiffres. Un tableau à 12 entrées pour les mois, un à 7 entrées pour les jours, un "20" devant l'année, et tu as ton algo tout cuit.

par Hells_Dark » 26 avr. 2007, 11:24

strtotime...pas bête du tout ça.
D'autant plus que je vais devoir exploiter des dates dans une bdd qui ne sont pas au format timestamp.

Merci, je vais regarder tout ça avec attention ;)

Faut que je trouve comment traiter l'affaire avec des numéro et pas avec des lettre, ce serait plus simple.
Genre :
echo date( 'd' , strtotime( '04-07 +3 WEEK  02' ) ) . '<br />'; 
D'ailleurs, le top serait :
echo date( 'd m' , strtotime( '07  51 00' ) ) . '<br />'; 
Et récupérer ainsi le numéro du jour et du mois, uniquement à partir de l'année et du numéro de la semaine, et le numéro du jour dans la semaine..

par Jules Petibidon » 26 avr. 2007, 11:18

hello,

tu peux t'amuser avec strtotime() <- elle est top cette fonction :)

beaucoup moins t'amuser en lisant ceci :

http://www.gnu.org/software/tar/manual/ ... r_109.html

et en application ca pourrait ressembler à cela :
echo date( 'D d/m/Y' , strtotime( 'APRIL 2007 +3 WEEK  FRIDAY' ) ) . '<br />';
toutefois, je ne garantis pas cela sur facture ;)

Edit :
Il se peut que ce soit un peu foireux avec les décalages de semaines, je sais vraiment pas si on peut s'y fier... enfin teste ! ;)

par Hells_Dark » 26 avr. 2007, 11:04

Et bien, le numéro du jour dans le mois.
Exemple pour aujourd'hui : le 26 ;)

(Je fais un calendrier et j'affiche une semaine entière, avec les heures et tout. On connais le numéro de la semaine, mais pas celui du jour. On sait juste que c'est le lundi de la semaine, le mardi.. et moi, je veux le numéro du jour qui y correspond.)

Jusqu'ici, je me suis amusé avec date et mktime, mais il n'y a pas de parametre numéro de la semaine dans mktime :P

par @rthur » 26 avr. 2007, 11:04

Bonjour,

Qu'entends tu par "obtenir le jour"?

Obtenir le jour à partir du numero du jour dans la semaine

par Hells_Dark(off) » 26 avr. 2007, 10:56

Bonjour,

J'ai ces données :
* Numéro de la semaine
* Numéro du jour dans la semaine (0 : dimanche, 1 lundi...6 Samedi)
* numéro du Mois
* Année

Et je souhaiterais obtenir le jour mais je ne trouve pas la formule/fonction adéquat.

Merci :)