begin process at 2008 05 17 03:04:18
1 173 899 membres
32 nouveaux aujourd'hui
13 973 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

RETROUVE LA DATE DE CRÉATION D'UN FICHIER - API


Information sur la source

Catégorie :API Classé sous : date, fichier, création Niveau : Débutant Date de création : 12/11/2004 Vu : 6 423

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (3)
Ajouter un commentaire et/ou une note


Description

Une petite procédure très simple pour retrouver la date, l'heure de création d'un fichier avec les API.

Testé sous Win98 et 2000.

Source

  • '*****Dans une form*****
  • Dim Fichier_Path As String: Fichier_Path = ""
  • Dim Fichier_Existe As Boolean: Fichier_Existe = False
  • Dim Fichier_Date As String: Fichier_Date = ""
  • '**Fichier cible : test.txt**
  • If Right(App.Path, 1) <> "\" Then
  • Fichier_Path = App.Path & "\" & "test.txt"
  • Else
  • Fichier_Path = App.Path & "test.txt"
  • End If
  • Call Date_File(Fichier_Path, Fichier_Existe, Fichier_Date)
  • '*****On peut mettre le reste dans un module*****
  • Private Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
  • Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
  • Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
  • Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
  • Private Const MAX_PATH = 260
  • Private Type FILETIME
  • dwLowDateTime As Long
  • dwHighDateTime As Long
  • End Type
  • Private Type WIN32_FIND_DATA
  • dwFileAttributes As Long
  • ftCreationTime As FILETIME
  • ftLastAccessTime As FILETIME
  • ftLastWriteTime As FILETIME
  • nFileSizeHigh As Long
  • nFileSizeLow As Long
  • dwReserved0 As Long
  • dwReserved1 As Long
  • cFileName As String * MAX_PATH
  • cAlternate As String * 14
  • End Type
  • Private Type SYSTEMTIME
  • wYear As Integer
  • wMonth As Integer
  • wDayOfWeek As Integer
  • wDay As Integer
  • wHour As Integer
  • wMinute As Integer
  • wSecond As Integer
  • wMilliseconds As Integer
  • End Type
  • Public Sub Date_File(Chemin_File As String, Existe_File As Boolean, Date_File As String)
  • If Dir(Chemin_File, vbNormal) = "" Then 'Le fichier n'existe pas
  • Existe_File = False
  • Exit Sub
  • Else 'Le fichier existe
  • Existe_File = True
  • End If
  • Dim Info_Fichier As WIN32_FIND_DATA
  • '**Localise/identifie le fichier sur le disque et Info_Fichier reçoit les informations**
  • Call FindClose(FindFirstFile(UCase(Chemin_File), Info_Fichier))
  • Dim ft As FILETIME
  • '**Convertion de la date UTC en temps locale**
  • Call FileTimeToLocalFileTime(Info_Fichier.ftCreationTime, ft)
  • Dim st As SYSTEMTIME
  • '**Convertion en date et heure system**
  • Call FileTimeToSystemTime(ft, st)
  • '**Date_File récupére la date sous forme : "11/11/2004"**
  • Date_File = st.wDay & "/" & st.wMonth & "/" & st.wYear
  • '**Autre exemple date et heure sous la forme "jeudi 11 novembre 2004 14:11:23"**
  • Dim FileTimeToDouble As Double
  • Dim FormatFileDate As String
  • 'Renvoie la date correspondant au jour, au mois, à l'année indiqués etc...
  • FileTimeToDouble = DateSerial(st.wYear, st.wMonth, st.wDay) + TimeSerial(st.wHour, st.wMinute, st.wSecond)
  • 'Format la date de type sous forme : "jeudi 11 novembre 2004 14:11:23"
  • FormatFileDate = Format(FileTimeToDouble, "long date") & " " & Format(FileTimeToDouble, "long time")
  • End Sub
'*****Dans une form*****
Dim Fichier_Path As String: Fichier_Path = ""
Dim Fichier_Existe As Boolean: Fichier_Existe = False
Dim Fichier_Date As String: Fichier_Date = ""

'**Fichier cible : test.txt**
If Right(App.Path, 1) <> "\" Then
  Fichier_Path = App.Path & "\" & "test.txt"
Else
  Fichier_Path = App.Path & "test.txt"
End If
Call Date_File(Fichier_Path, Fichier_Existe, Fichier_Date)


'*****On peut mettre le reste dans un module*****

Private Declare Function FileTimeToLocalFileTime Lib "kernel32" (lpFileTime As FILETIME, lpLocalFileTime As FILETIME) As Long
Private Declare Function FileTimeToSystemTime Lib "kernel32" (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) As Long
Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long

Private Const MAX_PATH = 260

Private Type FILETIME
   dwLowDateTime As Long
   dwHighDateTime As Long
End Type

Private Type WIN32_FIND_DATA
   dwFileAttributes As Long
   ftCreationTime As FILETIME
   ftLastAccessTime As FILETIME
   ftLastWriteTime As FILETIME
   nFileSizeHigh As Long
   nFileSizeLow As Long
   dwReserved0 As Long
   dwReserved1 As Long
   cFileName As String * MAX_PATH
   cAlternate As String * 14
End Type

Private Type SYSTEMTIME
   wYear As Integer
   wMonth As Integer
   wDayOfWeek As Integer
   wDay As Integer
   wHour As Integer
   wMinute As Integer
   wSecond As Integer
   wMilliseconds As Integer
End Type

Public Sub Date_File(Chemin_File As String, Existe_File As Boolean, Date_File As String)

If Dir(Chemin_File, vbNormal) = "" Then 'Le fichier n'existe pas
  Existe_File = False
  Exit Sub
Else 'Le fichier existe
  Existe_File = True
End If

Dim Info_Fichier As WIN32_FIND_DATA
'**Localise/identifie le fichier sur le disque et Info_Fichier reçoit les informations**
Call FindClose(FindFirstFile(UCase(Chemin_File), Info_Fichier))

Dim ft As FILETIME
'**Convertion de la date UTC en temps locale**
Call FileTimeToLocalFileTime(Info_Fichier.ftCreationTime, ft)

Dim st As SYSTEMTIME
'**Convertion en date et heure system**
Call FileTimeToSystemTime(ft, st)

'**Date_File récupére la date sous forme : "11/11/2004"**
Date_File = st.wDay & "/" & st.wMonth & "/" & st.wYear

'**Autre exemple date et heure sous la forme "jeudi 11 novembre 2004 14:11:23"**
Dim FileTimeToDouble As Double
Dim FormatFileDate As String
'Renvoie la date correspondant au jour, au mois, à l'année indiqués etc...
FileTimeToDouble = DateSerial(st.wYear, st.wMonth, st.wDay) + TimeSerial(st.wHour, st.wMinute, st.wSecond)

'Format la date de type sous forme : "jeudi 11 novembre 2004 14:11:23"
FormatFileDate = Format(FileTimeToDouble, "long date") & " " & Format(FileTimeToDouble, "long time")

End Sub

Conclusion

Rien de difficile mais peut être utile au débutant

Avec qq modifications on peut retrouver la date de modification ou du dernier accès du fichier.
  • signaler à un administrateur
    Commentaire de general_tao le 16/11/2004 03:56:56

    Mais est-ce que on peut changer la date ou est ce qu'il y a un moyen de le changer,

    genre de :
    jeudi 11 novembre 2004 14:11:23
                             à
    dimacnhe 1 janvier 2000 00:00:00

    thx d'avance

  • signaler à un administrateur
    Commentaire de Nocturne le 16/11/2004 09:23:57

    Il y a déjà une source pour modifier les dates notament la date de création : Lire et modifier les attributs de date d'un fichier, Auteur : Big Jim
    http://www.vbfrance.com/code.aspx?ID=259

  • signaler à un administrateur
    Commentaire de steph12358 le 18/02/2005 10:07:42

    Exactement ce que je cherchais.

    En plus je ne connaissais pas la syntaxe "dim ... :" permettant de déclarer et d'initialiser une variable en une seule opération. Avec VB on en apprend tous les jours...

    Encore merci.

Ajouter un commentaire

Appels d'offres

Pub



CalendriCode

Mai 2008
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS