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 :

[Dates] modifier la date du server php


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 1
    Points
    1
    Par défaut [Dates] modifier la date du server php
    Bonjour,

    J'utilise phpunit pour tester mes script et j'ai besoin de tester des comportements qui varient en fonction de la date.

    Ma question est la suivante : est-il possible de modifier (en php) le timestamp qui est utilisé dans toutes les fonctions de date sans modifier la date de windows?

    Merci de votre aide.

  2. #2
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Si tu as besoins d'une date
    est ce que tu peux la faire toi meme avec mktime?

    un peu comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $nbreJours = 7;
    //Va mettre 7 jours de plus pour la date
    $dans7jours = date("d/m/Y", mktime(0, 0, 0, date("m"), date("d")+$nbreJours,  date("Y")));
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  3. #3
    Nouveau Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Salut,

    Ce que je veux faire est différent.

    Disons par exemple que j'ai une fonction à tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    function l_an_2000_est_passe(){
        return date('Y') > 2000;
    }
    assertTrue(l_an_2000_est_passe());
    //on change l'annee actuelle en 2000;
    assertFalse(l_an_2000_est_passe());
    Tu m'as compris ?

  4. #4
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Oui et non la...
    tu veux que le date('Y') qui te retourne actuellement 2007 soit changé pour par exemple 1999?

    c'est pas vraiment clair ce que tu veux dsl
    assertTrue...c'est quoi ca?

    ta fonction l_an_2000_est_passe()
    va te retourner toujours true non?
    tu demandes un return de (est-ce que l'anne est > que 2000) ?
    tu veux modifier quoi toi? le 2000 ou l'année?
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  5. #5
    Nouveau Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Voila assertTrue($exp) ne provoque pas d'erreur si $exp est vrai, assertFalse($exp) ne provoque pas d'erreur si $exp est faux.

    Pour que un test se passe correctement il faut qu'il y ait aucune erreur.

    Oui la fonction renvoie vrai si date('Y') est supérieur à 2000.

    Oui ce que je veux c'est que date('Y) ait par exemple la valeur 1999 au lieu de 2007 pour tester toutes les fonctionnalité de la fonction.

    C'est fonction n'est qu'un exemple pour comprendre ce que je veux. Je teste bien entendu des fonctions plus complexe que celle-ci.

  6. #6
    Nouveau Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Ce que je veux c'est pouvoir modifier le timestamp du systeme sur une partie du script et sans modifier la date pour mes autres programmes qui tournent sur windows.

  7. #7
    Membre éprouvé
    Avatar de ozzmax
    Inscrit en
    Novembre 2005
    Messages
    977
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Novembre 2005
    Messages : 977
    Points : 959
    Points
    959
    Par défaut
    Et bien c'est ce que j'avais compris au tout départ
    tu peux utiliser mon bout de code plus haut et joue avec l'année au lieu du jour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $nbreAnnee = 8;
    //Va mettre 8 ans de moins pour la date d'aujourd'hui
    $jadis8ans = date("Y", mktime(0, 0, 0, date("m"), date("d"),  date("Y")-$nbreAnnee));
    echo $jadis8ans.'<br>'; //1999
    La perfection n'est pas un but, l'amélioration constante devrait l'être!
    La position des Développeurs de developpez avec les explications

  8. #8
    Nouveau Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Tu ne m'a toujours pas compris.
    Je sais très bien manipuler les dates en php.

    ce n'est pas la même chose que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date("Y", mktime(0, 0, 0, date("m"), date("d"),  date("Y")-$nbreAnnee));
    Ce que je veux c'est que me renvoi 1999 sur une partie du script.

    Le principe des jeux de test c'est de tester des fonctions sans avoir à y toucher.

    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    exec('date 22-06-99');
    date('Y'); // renvoi 1999
    mais le probleme c'est que j'ai changé la date de tout le systeme (ce que je ne veux pas).

    Quelqun a une idée?

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2005
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2005
    Messages : 20
    Points : 29
    Points
    29
    Par défaut
    il n'y a pas de soluition si tu utilise la fonction date
    car elle retourne la date du system.

    bon courrage, pour moi la seul solution c'est que tu creer une variable a la place de ta date pour les testes uniquement

  10. #10
    Nouveau Candidat au Club
    Inscrit en
    Mai 2006
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 17
    Points : 1
    Points
    1
    Par défaut
    Merci quand même, je me doutais que ce c'était impossible.

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

Discussions similaires

  1. [SQL-Server] Format Date SQL SERVER PHP
    Par lemzo84 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 10/06/2011, 16h52
  2. [XL-2007] couleur cellule date differente si date passee, ou date du jour
    Par chris09300 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 29/03/2011, 08h24
  3. [Dates] Modifier une date avec 'substr'
    Par R'SKaP dans le forum Langage
    Réponses: 4
    Dernier message: 01/06/2006, 12h40
  4. modifier la date
    Par illegalsene dans le forum Oracle
    Réponses: 2
    Dernier message: 05/01/2006, 16h16
  5. [Dates] Soustraction de date en php
    Par o_live dans le forum Langage
    Réponses: 1
    Dernier message: 28/11/2005, 15h25

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