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 :

Obtenir la date de création d'un fichier


Sujet :

Langage PHP

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Points : 30
    Points
    30
    Par défaut Obtenir la date de création d'un fichier
    Bonjour,

    Je cherche une fonction / une méthode qui me permettrait d'obtenir la date de création d'un fichier.


    Merci d'avance

  2. #2
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

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

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Salut,

    La fonction filemtime renvoi la date de dernière modification du fichier (ou de création si tu ne le modifie pas), par contre je ne croit pas qu'il existe une fonction PHP pour connaitre la date de création sans prendre en compte la date de modification.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Merci pour ta réponse.
    Je connais déjà filemtime, mais ce n'est pas ce qu'il me faut.

    J'ai des fichiers dans un tableau, ordonnés par date de création, mais ces fichiers peuvent être modifiés une ou plusieurs fois.
    L'ordre de mon tableau doit quand même être respecté même si le fichier est modifié...

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    La fonction stat (ou fstat) renvoie toutes les infos disponibles pour un fichier. A priori, la date de création n'a pas l'air d'en faire partie.
    Comment sont créés tes fichiers ? Si ce sont des fichiers uploadés ou générés par script, tu peux peut-être stocker la date de création dans une table en base de données ou quelque chose comme ça...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Salut Celira.
    J'avais déjà regardé du côté de stat() et avais abouti à la même conclusion que toi.

    Mes fichiers sont des photos prises par webcam que des autres personnes placent dans un dossier sur le réseau.
    J'ai essayé de faire afficher la "date du cliché" dans la colonne de l'explorateur Windows prévu à cet effet (vue "Détails"), mais elle reste vide...

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    A part ajouter la date de prise de vue dans le nom du fichier (genre photo_xxxxx_AAAAMMJJ-HHMM.jpg) ou mémoriser la date dans un fichier ou une bdd, je ne vois pas trop comment faire...

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par zzzer Voir le message
    Salut Celira.
    J'avais déjà regardé du côté de stat() et avais abouti à la même conclusion que toi.

    Mes fichiers sont des photos prises par webcam que des autres personnes placent dans un dossier sur le réseau.
    J'ai essayé de faire afficher la "date du cliché" dans la colonne de l'explorateur Windows prévu à cet effet (vue "Détails"), mais elle reste vide...
    c'est que cette information n'existe pas

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    @Celira
    Impossible d'ajouter les dates aux noms de fichiers car ceux-ci sont standardisés...
    J'ai bien essayé d'exploiter les données exif (à savoir dans ce cas, le champ FileDateTime), mais celui-ci n'est pas correct car il prend la valeur de la dernière modification lorsque le fichier est modifié...


    @stealth35
    Si, je pense qu'il doit y avoir une manière d'arriver à mes fins et que cette information existe bien quelque part, car le mode Détails de l'explorateur Windows arrive bel et bien à avoir cette info (les valeurs de la colonne "Date de création" sont correctes).

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par zzzer Voir le message
    @stealth35
    Si, je pense qu'il doit y avoir une manière d'arriver à mes fins et que cette information existe bien quelque part, car le mode Détails de l'explorateur Windows arrive bel et bien à avoir cette info (les valeurs de la colonne "Date de création" sont correctes).
    regarde si y'a des info EXIF dans les images

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    regarde si y'a des info EXIF dans les images
    Il y en a, mais rien d'exploitable. cf plus haut

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    bizarre ton histoire, puisque le stat et le details c'est les mêmes valeurs

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    bizarre ton histoire, puisque le stat et le details c'est les mêmes valeurs
    stat() ne fournit pas la date de création du fichier...

    Citation Envoyé par php.net
    0 dev volume
    1 ino Numéro d'inode (*)
    2 mode droit d'accès à l'inode
    3 nlink nombre de liens
    4 uid userid du propriétaire (*)
    5 gid groupid du propriétaire (*)
    6 rdev type du volume, si le volume est une inode
    7 size taille en octets
    8 atime date de dernier accès (Unix timestamp)
    9 mtime date de dernière modification (Unix timestamp)
    10 ctime date de dernier changement d'inode (Unix timestamp)
    11 blksize taille de bloc (**)
    12 blocks nombre de blocs de 512 octets alloués (**)

  13. #13
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Dans le sens ou si tu touches pas au droits du fichier l'inode est la date de création, donc présente dans stats et filectime.
    Si ça ne correspond pas c'est que le fichier à été modifié, mais Windows lui garde ça en mémoire dans le système de fichier. Cette info peu être récupéré via COM mais c'est vraiment de la bidouille, et ça ne marchera que en local

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Citation Envoyé par stealth35
    Si ça ne correspond pas c'est que le fichier à été modifié
    Merci pour ces précisions.
    Cependant, comme indiqué plus haut (http://www.developpez.net/forums/d11...r/#post6494891), mes fichiers sont appelés à être modifiés une ou plusieurs fois, mais il faut quand même qu'ils restent ordonnés par date de création.

  15. #15
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par zzzer Voir le message
    Merci pour ces précisions.
    Cependant, comme indiqué plus haut (http://www.developpez.net/forums/d11...r/#post6494891), mes fichiers sont appelés à être modifiés une ou plusieurs fois, mais il faut quand même qu'ils restent ordonnés par date de création.
    fait via COM, mais ça marche uniquement sur un serveur Windows, sinon c'est pas possible

  16. #16
    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

    J'ai jamais essayé, mais apparemment la fonction touch() permettrait de modifier la date de création ou dernière modification.
    Donc ce qui fait qu'il suffirait de récupérer la date du fichier (s'il existe), ensuite le modifier/écraser, pour enfin remettre la date récupérée auparavant (avec touch).

    La doc : touch()
    Tente de forcer la date de modification du fichier désigné par le paramètre filename à la date de spécifiée par le paramètre time
    Ils précisent bien "Tente".
    Ca sous entend qu'il doit avoir des cas où ça ne fonctionnerait pas.


    Fais un essai

  17. #17
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    pour faire via COM :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $com = new COM('Scripting.FileSystemObject');
     
    $file = $com->GetFile(__FILE__);
    $time = variant_date_to_timestamp($file->DateCreated);
     
    echo date('d/m/Y h:m:s', $time);

  18. #18
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    @RunCodePhp
    Merci pour ta réponse, mais je ne peux pas appliquer ta solution car les images sont modifiées par des personnes qui ne sont pas dans la programmation, je ne peux donc pas leur demander de faire tourner des scripts avant et après qu'ils modifient une image.

    @stealth35
    Je suis en train d'essayer COM.
    J'ai une erreur avec ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Unknown<br/><b>Description:</b> Unknown' in C:\Program Files\EasyPHP-5.3.9\www\test.php:13 Stack trace: #0 C:\Program Files\EasyPHP-5.3.9\www\test.php(13): com->GetFile('2603.jpg') #1 {main} thrown in C:\Program Files\EasyPHP-5.3.9\www\test.php on line 13
    Mais je suis en train d'essayer de voir d'où vient le problème... à suivre...

  19. #19
    Expert éminent sénior

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Points : 10 726
    Points
    10 726
    Par défaut
    Citation Envoyé par zzzer Voir le message
    @stealth35
    Je suis en train d'essayer COM.
    J'ai une erreur avec ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Uncaught exception 'com_exception' with message '<b>Source:</b> Unknown<br/><b>Description:</b> Unknown' in C:\Program Files\EasyPHP-5.3.9\www\test.php:13 Stack trace: #0 C:\Program Files\EasyPHP-5.3.9\www\test.php(13): com->GetFile('2603.jpg') #1 {main} thrown in C:\Program Files\EasyPHP-5.3.9\www\test.php on line 13
    Mais je suis en train d'essayer de voir d'où vient le problème... à suivre...

    normale, le nom du fichier doit être en absolu, donc fait un realpath

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 44
    Points : 30
    Points
    30
    Par défaut
    Yesss!

    C'est bon !

    Merci beaucoup stealth pour cette aide, t'es trop fort!

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

Discussions similaires

  1. [PowerShell] Comment obtenir la date de création d'un fichier sur ftp distant?
    Par Gilardi01 dans le forum Scripts/Batch
    Réponses: 0
    Dernier message: 13/09/2011, 15h16
  2. Date de création d'un fichier
    Par zetta dans le forum Langage
    Réponses: 2
    Dernier message: 13/10/2007, 01h32
  3. Réponses: 4
    Dernier message: 15/09/2005, 13h27
  4. Réponses: 17
    Dernier message: 01/03/2005, 16h11
  5. Date de création d'un fichier
    Par daphne35 dans le forum Windows
    Réponses: 5
    Dernier message: 20/01/2005, 17h09

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