Manipulation de dates

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 : Manipulation de dates

par Moker » 20 nov. 2006, 16:47

merci Cyrano et ouckileou :D c'est vraiment pas facile de travailler avec les dates !

en tout cas grace à vous j'arrive à afficher les evenement de la base dans un intervalle d'une semaine merci pour tout ! :wink:
Avec dimanche comme premier jour (comme fonctionne PHP)
je n'etait pas au courant et grace à cette precision je me suis apercu que dans le manuel php de date("w") on compte de 0 (pour dimanche) à 6 (pour samedi) j'ai donc ton code de la maniere suivante :
<?php 
$numAujourdhui = date("w"); 
echo $aujourdhui  = date("d"); 
echo $premierJour = date("d") - $numAujourdhui ; 
echo $dernierJour = date("d") + (6 - $numAujourdhui); 
?>
merci encore à tous, vos conseils sont d'une aide plus que precieuse !

par ouckileou » 20 nov. 2006, 01:02

Avec dimanche comme premier jour (comme fonctionne PHP)
<?php
$numAujourdhui = date("w");
echo $aujourdhui  = date("d");
echo $premierJour = date("d") - $numAujourdhui ;
echo $dernierJour = date("d") + (7 - $numAujourdhui);
?>
Ainsi tu peux calculer le nombre de jours passés, le nombre de jours qu'il reste, et les utiliser dans ton calcul.

par Cyrano » 20 nov. 2006, 00:59

Un jour = 24 heures X 60 minutes X 60 secondes = 86400 secondes

Transforme ta date de départ en timestamp avec mktime(), ajoutes-y 86400 * le nombre de jour que tu veux et transforme avec date("format", le-resultat) pour récupérer une date normale.

par Moker » 20 nov. 2006, 00:34

je suis desolé de vous ennuyer encore avec ca mais la manipulation de date n'est pas simple :?

ayant declarer les variables suivante :
$jourCourant = date("d");
$moisCourant = date("m");
$anneeCourante = date("Y");

$date = mktime( 0, 0, 0, $moisCourant, $jourCourant, $anneeCourante );
je desire recuperer la date du 1er jour de la semaine ainsi que celle du dernier.

dans la doc php j'ai lu ceci :
$tomorrow  = mktime(0, 0, 0, date("m")  , date("d")+1, date("Y"));
il faudrait que je fasse de meme, mais au lieu d'ajouter 1 à date("d") j'aimerait soustraire ou ajouter le nombre de jour passés à $date depuis le debut de semaine.

avez vous une idée pour effectuer ce calcul ?

merci à vous :)

par Moker » 15 nov. 2006, 23:46

ralala merci milles merci cyrano :D

vous connaissez les manuels php/mysql par coeur je suis epaté :shock:

merci à tous pour votre aide plus que precieuse !

par Cyrano » 15 nov. 2006, 22:38

Utilise la fonction SQL WEEK(date) dans une clause WHERE.

par Moker » 15 nov. 2006, 22:32

j'ai une deuxieme question sur la manipulation des dates, si cela ne vous ennuie pas bien sur :lol:

etant donné ceci :
$jourCourant = date("d"); // Vaut 15
$moisCourant = date("m"); // Vaut 11
$anneeCourante = date("Y"); // Vaut 2006
$semaineCourante = date("W",mktime(0,0,0,$moisCourant,$jourCourant,$anneeCourante)); // Vaut 46
comment puis-je construire ma requete pour chercher les rendez-vous de la semaine en cours (46) ?

pour ce faire chaque enregistrement de ma table rdv possede un champs date de debut et date de fin, du type "aaaa-mm-jj hh:mm:ss".

pouvez-vous m'aider une fois de plus ?

par Moker » 15 nov. 2006, 22:31

merci à tous les deux ! :D

j'aurait du lire plus attentivement le manuel de le fonction date() , merci Ajoloca :oops:

voici le code modifié et qui fonctionne :
		<table border="1">
		<?php

		$calendar_txt['mois'] = array('', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet','Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
		$calendar_txt['jours'] = array('Lundi', 'Mardi', 'Mercredi','Jeudi', 'Vendredi', 'Samedi',	'Dimanche');
		
		$d = 1;
		$m = date("m");
		$y = date("Y");
		
		$mois = mktime( 0, 0, 0, $m, $d, $y ); // timestamp du mois indiqué
		
		setlocale(LC_ALL, 'fr_FR');
				
		$cellule = 1; // compteur de cellules
		$jour = 1; // Compteur de jours
		
		$premierJour = date("w",$mois); // premier jour du mois
		$dernierJour = date("t",$mois); // dernier jour du mois

		for($i=0;$i<7;$i++) // ceation des lignes/semaines du calendrier
		{
			if($i==0) // si c'est la premiere ligne (nom des jours)
			{
				echo "<tr>";
				for($j=0;$j<7;$j++) // Pour chaque jour de la semaine
				{
					echo "<th>".$calendar_txt['jours'][$j]."</th>"; // affiche le nom du jour dans une cellule
				}
				echo "</tr>";
				
			}else{ // sinon les lignes sont des semaines
			
				echo "<tr>";
				for($j=0;$j<7;$j++) // Pour chaque jour de la semaine
				{
					if($cellule >= $premierJour && $jour <= $dernierJour)
					{
						echo "<td>";
						echo ($jour == date("d")?"<b>".$jour."</b>":$jour); // on affiche le numero du jour
						echo "</td>";
						$jour++; // On passe au jour suivant
					}
					else
					{
						echo "<td>";
						echo "-";
						echo "</td>";	
					}
					$cellule ++;
				}
				echo "</tr>";
			}
		}
		?>
</table>
merci encore !

par Ajoloca » 15 nov. 2006, 19:28

Bonjour,

Utilise
date('w', mktime(....))

par DocType » 15 nov. 2006, 19:25

Un message d'erreur peut être ? :roll:
Une piste ?

Manipulation de dates

par Moker » 15 nov. 2006, 19:06

bonjour,

je cherche a creer un agenda avec prise de rendez-vous.

j'aurait aimer avoir votre aide car je n'arrive pas à recuperer le premier jour du mois pour demarrer le calendrier dans la bonne cellule.
		<table border="1">
		<?php

		$calendar_txt['mois'] = array('', 'Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet',
													'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre');
		$calendar_txt['jours'] = array('Lundi', 'Mardi', 'Mercredi','Jeudi', 'Vendredi', 'Samedi',	'Dimanche');
		
		$d = 1; 		// jour
		$m = date("m"); // mois
		$y = date("Y"); // annee
		
		$mois = mktime( 0, 0, 0, $m, $d, $y ); // timestamp du mois indiqué
		
		setlocale(LC_ALL, 'fr_FR');
				
		$jour=1; // compteur de jours
		$dernierJour = date("t",$mois); // dernier jour du mois

		for($i=0;$i<7;$i++) // ceation des lignes du calendrier
		{
			if($i==0) // si c'est la premiere ligne
			{
				echo "<tr>"; // On ouvre un ligne
				for($j=0;$j<7;$j++) // Pour chaque jour de la semaine
				{
					echo "<th>".$calendar_txt['jours'][$j]."</th>"; // affiche le nom du jour dans une cellule
				}
				echo "</tr>"; // on ferme la ligne
				
			}else{ // sinon
			
				echo "<tr>"; // On ouvre un ligne
				for($j=0;$j<7;$j++) // Pour chaque jour de la semaine
				{
					if($jour<=$dernierJour) // Si ce n'est pas la fin du mois
					{
						// On affiche une cellule avec le numero du jour
						echo "<td>";
						echo ($jour == date("d")?"<b>".$jour."</b>":$jour);
						echo "</td>";
						
					}else{ // sinon on affiche une cellule vide
					
						echo "<td>-</td>";
					}
					$jour++;
				}
				echo "</tr>";
			}
		}
		?>
</table>
merci a vous!