Précédent   Forum des professionnels en informatique > PHP > Langage > Fonctions
Fonctions Forum d'entraide sur les fonctions PHP. Avant de poster -> FAQ fonctions et Sources diverses
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 01/07/2008, 15h01   #1
Membre habitué
 
Avatar de Jahprend
 
Étudiant
Inscription : juin 2006
Messages : 255
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2006
Messages : 255
Points : 131
Points : 131
Envoyer un message via MSN à Jahprend
Par défaut [Dates] Mktime ne suffit donc pas?

Bonjour,

Je cherche à modifier une date (chose simple) :
Code :
1
2
$datedujourmodif = date("Y-m-d");//(2008-07-01)
$datedujourmodif=date("Y-m-d",mktime(0,0,0,date("m"),date("d")+1,date("Y")));//(2008-07-02)
Le problème se situe au niveau que je n'arrive pas à trouver comment REmodifier cette valeur, car si je réécris la même ligne, il prendra en compte la date du jour, et non la date modifié auparavant.

Autre chose, je n'arrive pas à changer de format une date (passer d'un format Timestamp à un autre format Timestamp), j'ai besoin de ça pour savoir si un jour
(qui n'est pas aujourd'hui, car j'avance avec les mktime), est un samedi ou un dimanche, et donc passer du format "Y-m-d" au format "w" (jour de la semaine en numérique).

Tout ça a pour base le fait que je n'arrive pas à manipuler les dates plus d'une seule fois, on dirai qu'il n'est pas possible de prendre un Timestamp comme valeur modifiable pour des conditions ou des boucles...
__________________
On peut être pathéthique sans faire l'éthique du pâté.
Jahprend est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2008, 16h24   #2
Membre Expert
 
Homme
Inscription : janvier 2004
Messages : 1 238
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Secteur : Finance

Informations forums :
Inscription : janvier 2004
Messages : 1 238
Points : 1 421
Points : 1 421
tu travaille avec la mauvaise donnée.

Il faut que, en interne, tu travaille avec un timestamp (le type renvoyé par mktime) et que, lorsque tu souhaite afficher quelque chose, tu utilise date()

Du coup, pour récuperer la date du jour :
http://fr.php.net/fr/time
Code :
1
2
3
$now=time();
$demain = mktime(0,0,0, date('m', $now), date('d', $now)+1, date('Y', $now));
$dans2jours = mktime(0,0,0, date('m', $demain), date('d', $demain)+1, date('Y', $demain));
etc...
__________________
PHP :
Regle n°1 : mysql_query(...), mysql_connect(...) et mysq_select_db(...) doivent EN DEBUG etre suivies de or die(mysql_error()); (mais jamais en production)
Regle n°2 : Mieux encore : mysql_query($requete) or die("$requete<br/>".mysql_error());
Regle n°3 : echo '<pre>';var_dump($var);echo '</pre>'; affiche le contenu et le type d'une variable.
Publiez vos textes de fantasy et de science-fiction sur http://www.cercledefaeries.com/concours/
Fladnag est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2008, 16h40   #3
Membre habitué
 
Avatar de Jahprend
 
Étudiant
Inscription : juin 2006
Messages : 255
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2006
Messages : 255
Points : 131
Points : 131
Envoyer un message via MSN à Jahprend
Y a quelque chose que je comprend pas, je test ton programme, en ajoutant de quoi voir si ça marche :

Code :
1
2
3
4
5
6
$now=time();
  $demain = date("Y-m-d",mktime(0,0,0, date('m', $now), date('d', $now)+1, date('Y', $now)));
  $dans2jours = date("Y-m-d",mktime(0,0,0, date('m', $demain), date('d', $demain)+1, date('Y', $demain)));
  echo "date du jour :$now\n";
  echo "date demain :$demain\n";
  echo "date dans 2 jours :$dans2jours\n";
Et j'obtiens :
Première date : 12114922654 (normal car il est sous sa forme originel)
Deuxième date : 2008-07-02 (normal car c'est le lendemain)
Troisième date : 1970-01-02 (il prend la valeur de base de la fonction (1970-01-01) et lui ajoute un jour, alors que ce qu'on recherche c'est ajouter un jour à la variable d'avant...

Est-ce normal? (j'ai peut-être rien compris à ce que tu m'a donné)
__________________
On peut être pathéthique sans faire l'éthique du pâté.
Jahprend est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2008, 16h51   #4
Expert Confirmé
 
Avatar de Eusebe
 
Inscription : mars 2006
Messages : 1 989
Détails du profil
Informations personnelles :
Âge : 34

Informations forums :
Inscription : mars 2006
Messages : 1 989
Points : 3 606
Points : 3 606
C'est normal puisque $demain n'est pas un timestamp (comme l'a dit Fladnag), et qu'il ne peux donc pas être utilisé avec mktime.

Il faut plutôt que tu fasses (non testé) :
Code :
1
2
3
4
5
6
$now=time();
$demain = mktime(0,0,0, date('m', $now), date('d', $now)+1, date('Y', $now));
$dans2jours = mktime(0,0,0, date('m', $demain), date('d', $demain)+1, date('Y', $demain));
echo "date du jour : ".date("Y-m-d",$now)."\n";
echo "date demain : ".date("Y-m-d",$demain)."\n";
echo "date dans 2 jours : ".date("Y-m-d",$dans2jours)."\n";
Eusebe est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2008, 16h55   #5
Membre habitué
 
Avatar de Jahprend
 
Étudiant
Inscription : juin 2006
Messages : 255
Détails du profil
Informations personnelles :
Âge : 25
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2006
Messages : 255
Points : 131
Points : 131
Envoyer un message via MSN à Jahprend
Merci de vos réponses, ce que tu m'as donné marche !

A tester sur mon prog
__________________
On peut être pathéthique sans faire l'éthique du pâté.
Jahprend est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h31.


 
 
 
 
Partenaires

Hébergement Web