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 :

timestamp unix, ajouter des mois [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut timestamp unix, ajouter des mois
    Bonjour,
    Pour vérifier la valider d'un fichier (cache), je prend sa date de dernière modif (filemtime) et je vérifie si elle est inférieur à la date du jour - un "temps définis".

    Pour les heures (60*60*nb_heure) et les jour (60*60*24*nb_jour), c'est simple.
    Mais pour les mois comment faire ?
    Il n'ont pas le même nombre de jours, idem pour les années ?

    Merci

  2. #2
    Membre éclairé Avatar de shell13010
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2008
    Messages : 281
    Par défaut
    De tête je dirais, pour le mois:

    et année:


  3. #3
    Invité
    Invité(e)
    Par défaut
    Logiquement, je dirai que non car tous les mois n'ont pas 30 jours et les année 365.

    C'est fou comme des choses qui semble simple ne le sont pas.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu prends ton problème à l'envers : la notion de "mois" couvre un temps variable, il n'y a rien à faire contre ça et il vaut mieux raisonner en jours.
    De la même façon, il y a 2 jours par an qui ne font pas 24 heures.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Salut,

    pourquoi tu te complique la vie ?
    tu transformes le résultat de filemtime() en date que tu compares à ta date calculée.
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    $timestamp = 1170288000;
    $date      = new DateTime("@$timestamp");
    $limit     = new DateTime('-12 hours');
     
    if ($date < $limit) {
        /* ... */
    }

  6. #6
    Invité
    Invité(e)
    Par défaut
    Je ne sais pas si j'ai tout pigé, mais j'ai fait cela pour tester.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $filename = 'index.php';
    $timestamp = filemtime($filename) ;
    $date      = new DateTime("$timestamp");
    $limit     = new DateTime('-12 hours');
     
    if ($date < $limit) {
        echo 'oui';
    }
    else
    {
        echo 'non';
    }
    J’obtiens un message d'erreur :
    Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct() [<a href='datetime.--construct'>datetime.--construct</a>]: Failed to parse time string (1365101017) at position 8 (1):

  7. #7
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    Tu n'as pas bien recopié !
    Tu a oublié le @ dans new DateTime("$timestamp"); c'est comme ça new DateTime("@$timestamp"); c'est un raccourci.

    Sinon le code propre c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $date = DateTime::createFromFormat('U', $timestamp);

  8. #8
    Invité
    Invité(e)
    Par défaut
    En effet ça marche.
    J'ai opté pour la version complète de $date, car j'ai pensé que le @ été une faute de frappe.
    En plus je l'utilise pour bloquer l'affichage de certaines erreur .

    Merci pour ton aide

  9. #9
    Invité
    Invité(e)
    Par défaut
    Juste une chose, je ne trouve pas dans la doc php la liste des expressions utilisable hour(s), day(s), ... ?

  10. #10
    Expert confirmé
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Billets dans le blog
    12
    Par défaut
    faut aller se plonger dans la doc. C'est très souple et très pratique.

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

Discussions similaires

  1. Ajouter des mois à une date
    Par SOPSOU dans le forum InterBase
    Réponses: 3
    Dernier message: 17/11/2010, 15h20
  2. ajouter des mois a une date
    Par debutantasp dans le forum Général JavaScript
    Réponses: 17
    Dernier message: 14/03/2008, 11h59
  3. Ajouter des mois à une date TDateTime
    Par yashiro41281 dans le forum Langage
    Réponses: 3
    Dernier message: 05/10/2007, 10h25
  4. [Dates] Ajouter des mois à une date
    Par tiger63 dans le forum Langage
    Réponses: 8
    Dernier message: 25/05/2007, 16h42
  5. [Dates] ajouter des mois dans une date
    Par illegalsene dans le forum Langage
    Réponses: 7
    Dernier message: 16/01/2007, 14h41

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