Précédent   Forum des professionnels en informatique > PHP > Langage
Langage Forum sur le langage PHP, la POO, les conventions, la sécurité, etc. Avant de poster : FAQ Langage, toutes les FAQ PHP, cours langage et sources PHP
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 30/11/2011, 18h06   #1
Membre actif
 
Homme marcel marie monnier
retraité, ex chef de projets en informatique
Inscription : juillet 2005
Messages : 383
Détails du profil
Informations personnelles :
Nom : Homme marcel marie monnier
Localisation : France

Informations professionnelles :
Activité : retraité, ex chef de projets en informatique
Secteur : Associations - ONG

Informations forums :
Inscription : juillet 2005
Messages : 383
Points : 158
Points : 158
Par défaut utilisation date autre que celle du jour

Bonjour,
Voilà encore une question simple et sans doute évidente !!!
Je sais obtenir le mois dernier, avec le même jour, de cette façon :

Code :
$le_mois_dernier = mktime(0, 0, 0, date("m")-1, date("d"), date("Y"));
Je voudrais obtenir le 5ème jour suivant, du mois dernier, en utilisant $le_mois_dernier
Je dis bien en utilisant $le_mois_dernier dans une instruction.

Donc SVP ne me dites pas d'écrire date("d") + 5 .
Tout simplement parce que dans certains cas le résultat d'une telle écriture n'est pas correct ni ce que je souhaite.

Je vous remercie.
Marcel Marie
marcel marie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2011, 18h16   #2
Modérateur
 
Inscription : septembre 2010
Messages : 7 219
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 219
Points : 8 598
Points : 8 598
utilise strtotime
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 01/12/2011, 11h42   #3
Membre actif
 
Homme marcel marie monnier
retraité, ex chef de projets en informatique
Inscription : juillet 2005
Messages : 383
Détails du profil
Informations personnelles :
Nom : Homme marcel marie monnier
Localisation : France

Informations professionnelles :
Activité : retraité, ex chef de projets en informatique
Secteur : Associations - ONG

Informations forums :
Inscription : juillet 2005
Messages : 383
Points : 158
Points : 158
Merci.
J'ai regardé sur internet l'usage vrai de strtotime.
Les gens ont dû se "copier" mutuellement car les articles sont tous les mêmes, exemples y compris.

STR TO TIME sous-entend transformation d'une séquence de caractères en une date, mais aucune explication sur l'utilisation de la date ainsi obtenue.
ALORS je reviens à mon cas concret.
Je pense manipuler assez bien mktime qui me permet d'obtenir le jour en cours (ce_jour) et le nombre de jours dans le mois (nb_j).
Le premier jour du mois actuel est donc :
(1)
Code :
$prem_jour_mois_courant = mktime(0, 0, 0, date("m"), date("d")-$ce_jour-1, date("Y"));
Le premier jour du mois suivant sera :
(2)
Code :
$prem_jour_mois_suivant = mktime(0, 0, 0, date("m"), date("d")-$ce_jour+$nb_j, date("Y"));
Cette formulation me gêne "intellectuellement" car je souhaiterais que la formule (2) ne mentionne pas ($ce_jour) et ne contienne que $nb_j-1 à partir d'une nouvelle date qui serait évidemment $prem_jour_mois_courant.

Autrement dit je voudrais travailler avec mktime sur une date autre que la date du jour.

Dans mon script j'effectue une boucle sur de nombreux mois et ça me paraîtrait plus souple et simple de travailler strictement sur le premier jour du mois de l'itération précédente plutôt que sur la date du jour actuel.

Eh bien voilà. J'ai donc une solution théorique mais une solution pratique plus ergonomique serait souhaitée, outre une meilleure connaissance de la manipulation des dates en PHP.

Merci de m'avoir lu. A plus tard.
Marcel Marie
marcel marie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 12h21   #4
Membre actif
 
Homme marcel marie monnier
retraité, ex chef de projets en informatique
Inscription : juillet 2005
Messages : 383
Détails du profil
Informations personnelles :
Nom : Homme marcel marie monnier
Localisation : France

Informations professionnelles :
Activité : retraité, ex chef de projets en informatique
Secteur : Associations - ONG

Informations forums :
Inscription : juillet 2005
Messages : 383
Points : 158
Points : 158
Faute avouée est à moitié pardonnée !! ??
En fait je suis très "ballot" et j'avais mal compris mktime() qui peut n'avoir rien à faire avec la date VRAIE du jour .
Je vais OBTENIR le mois et ensuite, dans ma boucle, il me suffira d'incrémenter le mois EN FIXE ET NON EN VARIABLE.
ALORS svp? ON N'ENGUIRLANDE PAS le gars ....

Marcel Marie, Merci
marcel marie est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 14h03   #5
Modérateur
 
Inscription : septembre 2010
Messages : 7 219
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 219
Points : 8 598
Points : 8 598
pas dur avec strtotime :

Code :
1
2
3
$time = strtotime('last month +5 days');
echo date('d/m/Y', $time);
// 06/11/2011
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 15h10   #6
Modératrice
 
Avatar de Celira
 
Femme
Développeuse PHP/Java
Inscription : avril 2007
Messages : 3 671
Détails du profil
Informations personnelles :
Sexe : Femme
Âge : 27
Localisation : France

Informations professionnelles :
Activité : Développeuse PHP/Java

Informations forums :
Inscription : avril 2007
Messages : 3 671
Points : 5 404
Points : 5 404
stealth a un fanatique de strtotime
Et il a bien raison !
Tu peux également utiliser un time de référence dans strtotime au lieu d'utiliser maintenant.
Code :
1
2
3
4
5
6
7
8
$aujourdhui = strtotime('now'); 
// => 01/12/2011
$il_y_a_un_mois = strtotime('last month', $aujourdhui); 
// => 01/11/2011
$cinq_jours_plus_tard = strtotime('+ 5 days', $il_y_a_un_mois); 
// => 06/11/2011
$trois_jours_encore_plus_tard = strtotime('+ 3 days', $cinq_jours_plus_tard); 
// => 09/11/2011
__________________
Modératrice PHP
Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)

Pour afficher votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur)
Celira est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 17h16   #7
Modérateur
 
Inscription : septembre 2010
Messages : 7 219
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 219
Points : 8 598
Points : 8 598
Citation:
Envoyé par Celira Voir le message
stealth a un fanatique de strtotime
c'est super puissant, et puis pas te problème de décalage horaire, ni d'année bissextile

http://fr2.php.net/manual/fr/datetim...s.relative.php
__________________
http://blog.stealth35.com/
stealth35 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2011, 19h05   #8
Membre actif
 
Homme marcel marie monnier
retraité, ex chef de projets en informatique
Inscription : juillet 2005
Messages : 383
Détails du profil
Informations personnelles :
Nom : Homme marcel marie monnier
Localisation : France

Informations professionnelles :
Activité : retraité, ex chef de projets en informatique
Secteur : Associations - ONG

Informations forums :
Inscription : juillet 2005
Messages : 383
Points : 158
Points : 158
Bonsoir,
Je note tout cela bien volontiers car je crois/vois que c'est très intéressant.
Je vais m'en inspirer au mieux pour le cas exposé.
Ce n'est tout de même pas inné ni intuitif ces formulations anglaises. BRAVO.
Je vous remercie tous.
A bientôt, sur un autre sujet. Je ferme celui-ci.
Marcel Marie
marcel marie 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 00h53.


 
 
 
 
Partenaires

Hébergement Web