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 :

strftime : enlver le 0 avec W


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 81
    Par défaut strftime : enlver le 0 avec W
    Bonjour à tous,

    Voilà, j'ai un moteur de recherche qui interroge les locations en base de données et me retourne que celles disponibles pour une semaine choisie.
    La fonction strftime() me permet de retourner un numéro de semaine dans l'année à partir d'une date d'arrivée :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $semaine_arrivee = strftime("%W", mktime(0, 0, 0, $mois_arrive, $jour_arrive, date('Y')));
    Cependant %W me retourne 01, 02, 03 et non pas 1, 2, 3 pour mes premières semaines de l'année...

    En base de données j'ai des entrées sous la forme 1, 2, 3 et j'aimerais ne rien y changer, je trouve ça plus logique, surtout pour utiliser les incréments dans mes boucles de semaines ($i++);

    Bref, voilà le "pansement" que j'ai appliqué pour sauver le coup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // corrige les semaines 01 en 1, 02 en 2...
    $origine = array("01", "02", "03", "04", "05", "06", "07", "08", "09");
    $remplace = array("1", "2", "3", "4", "5", "6", "7", "8", "9");
    $semaine_arrivee = str_replace($origine, $remplace, $semaine_arrivee);
    Voici mes questions :
    1. est ce qu'il est possible de bricoler la fonction strftime pour en faire ce que j'en veux : 1, 2, 3 et non 01, 02...
    2. sinon : ma solution est-elle la plus optimisée ?

  2. #2
    Membre émérite Avatar de vorace
    Homme Profil pro
    Développeur
    Inscrit en
    Août 2010
    Messages
    573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Août 2010
    Messages : 573
    Par défaut
    y a plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $semaine_arrivee = (int)strftime("%W", mktime(0, 0, 0, $mois_arrive, $jour_arrive, date('Y')));

  3. #3
    Membre Expert Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 023
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 023
    Par défaut
    Salut,
    une solution non portable :
    - sous Win "%#W"
    - sous Linux "%-W"

    ou d'autres méthodes qui me semblent effectivement plus efficace que celle que tu proposes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if($semaine_arrivee[0] === "0")    {
       $semaine_arrivee = substr($semaine_arrivee, 1, 1);
    // des bons vieux cast
       $semaine_arrivee += 0;
        $semaine_arrivee = (int)$semaine_arrivee;
        $semaine_arrivee = intval($semaine_arrivee);
    }
    Sinon est-ce que tu as vu que strftime() retourne 00 pour une première semaine étalée sur 2 années ?

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 81
    Par défaut
    Merci vorace ! Excellent !
    Djakisback non je ne savais pas pour les deux années. Merci du tuyau.

    Vous êtes géniaux bonne journée !

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

Discussions similaires

  1. convertir l'heure avec strftime
    Par nymus7 dans le forum Langage
    Réponses: 13
    Dernier message: 26/11/2010, 09h47
  2. Afficher l'heure locale avec strftime
    Par cheprod dans le forum C
    Réponses: 5
    Dernier message: 22/07/2008, 12h16
  3. [Système] Problème avec strftime()
    Par Flobynaldo dans le forum Langage
    Réponses: 1
    Dernier message: 02/06/2006, 10h54
  4. [PHP]problème avec strftime()...
    Par sanosuke85 dans le forum Langage
    Réponses: 5
    Dernier message: 26/05/2005, 10h02
  5. Réponses: 2
    Dernier message: 20/03/2002, 23h01

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