IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Afficher la date de "vendredi" prochain sous conditions


Sujet :

Langage PHP

  1. #1
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 290
    Points : 209
    Points
    209
    Par défaut Afficher la date de "vendredi" prochain sous conditions
    Bonjour,

    Je suis dans un cas particulier ou le client peut commander des légumes à retirer soit le vendredi soit le samedi. Cependant, si il passe commande la veille du vendredi (par exemple), celle-ci sera prise en compte pour le vendredi d’après (et non pas pour le lendemain).

    Je ne vais pas bloquer les commandes mais juste afficher la date ou il pourra retirer son panier, parce que même si c'est clairement indiqué qu'il recevra un mail du commerçant quand sa commande sera prête, certains se pointent le mauvais jour.

    J'ai donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $vendredi = date('d/m/Y', strtotime('next Friday'));
    Disons qu'aujourd'hui nous somme le Jeudi 15 Novembre et il est 17h00. Le code va donc afficher "Vendredi 16/11/2012". Moi je souhaiterai qu’après Midi (12h00) le code m'affiche pas le vendredi 16 mais 23.

    Comment puis-je précéder s'il vous plait ?

    Merci d'avance

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    Le calcul se fait selon la date en cours, de plus, quelque soit l'heure.

    Peut être faudrait il rajouter 1 jour de plus (le jours suivant) par rapport à la date en cours lorsqu'il est au-delà de 12h00 pour récupérer le (bon) vendredi suivant.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  3. #3
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Un truc dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Prochain vendredi
    $vendredi = new DateTime('next friday');
     
    $maintenant = new DateTime();
    // maintenant plus 12 h
    $date_maintenant_p12h = $maintenant->add(new DateInterval('PT12H'));
     
    $date_livraison = $date_maintenant_p12h < $vendredi ? $vendredi : $vendredi->add(new DateInterval('P1W'));
     
    echo date_format($date_livraison, 'd-m-Y');

  4. #4
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 290
    Points : 209
    Points
    209
    Par défaut
    Merci.
    Le code de ABCIWEB est bien le résultat attendu mais je ne doit pas avoir la bonne version de php sur mon hébergeur qui génère une erreur.

    Comme je ne sais pas comment modifier la date en cour, j'ai donc fait ceci, mais je pense qu'il doit y avoir plus simple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    			/////////////////////////////////////////////////////////////////////////
    			//On récupere le timestamp du prochain vendredi
    			$vendredi_prochain = strtotime('next friday');
    			//On compte le nombre de sc entre le prochain vendredi est maintenant
    			$intervale_heure = $vendredi_prochain - time();
    			//Si il y a moins de 12h (43200sc)
    			if($intervale_heure < 43200)
    			{ 
    			 	// On affiche le vendredi d'apres
    			 	$vendredi =  date('d/m/Y', strtotime('next Friday + 7 days'));
    			}
    			//Sinon on affiche le vendredi qui arrive
    			else
    			{
    				$vendredi =  date('d/m/Y', strtotime('next Friday'));
    			}
     
    			echo $vendredi;
    		 	/////////////////////////////////////////////////////////////////////////

  5. #5
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    Mon code utilisait DateInterval qui nécessite PHP 5 >= 5.3.0

    Pour le reste, si ça fonctionne comme attendu, ça me paraît assez concis comme solution. On peut raccourcir le même code avec l'opérateur ternaire mais je vois rien d'autre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //On récupere le timestamp du prochain vendredi
    $vendredi_prochain = strtotime('next friday');
    //On compte le nombre de sc entre le prochain vendredi et maintenant
    $intervale_heure = $vendredi_prochain - time();
    //Si il y a moins de 12h (43200sc)
    $vendredi = $intervale_heure < 43200 ? date('d/m/Y', strtotime('next Friday + 7 days')) : date('d/m/Y', $vendredi_prochain);
     
    echo $vendredi;

  6. #6
    Membre actif
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2007
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Avril 2007
    Messages : 290
    Points : 209
    Points
    209
    Par défaut
    Effectivement oui. Je n'ai jamais utilisé l'opérateur ternaire, c'est vrai que c'est pas mal.

    Merci pour votre aide !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 14
    Dernier message: 22/11/2009, 05h48
  2. [XL-2003] macro pour afficher les dates des troisièmes vendredi du mois
    Par julius999 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 28/10/2009, 17h39
  3. Afficher la date de chaque vendredi ?
    Par _cece dans le forum Collection et Stream
    Réponses: 10
    Dernier message: 04/06/2009, 23h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo