Comment connaître la date et l'heure de création ou de dernière modification d'un fichier ?

From The Document Foundation Wiki
Jump to: navigation, search
This page is a translated version of the page Macros/General/005 and the translation is 100% complete.

Other languages:
English • ‎français

Description

Le langage dispose de la fonction FileDateTime qui renvoie une chaîne de caractères contenant la date et l'heure de création, ou de dernière modification, d'un fichier. Le résultat est renvoyé au format JJ/MM/AAAA HH:MM:SS.

Syntaxe :

  • FileDateTime (Text As String)

Paramètres :

  • Text : expression au format chaîne de caractères contenant une spécification de fichier non ambiguë (sans caractères génériques). Vous pouvez également utiliser la notation URL.

Exemple :

Sub ExampleFileDateTime
    MsgBox FileDateTime("C:\autoexec.bat")
End Sub

Cette fonction a fait l'objet d'un bug (cf. tdf#63306) dans quelques versions intermédiaires de LibreOffice.

L'API[1] permet de contourner ce bug et offre par ailleurs d'autres fonctions performantes d'accès aux fichiers.

L'exemple suivant montre comment récupérer la date et l'heure de création ou de dernière modification d'un fichier via la méthode getDateTimeModified[2].

Précisions :

  • La méthode attend un Url,
  • Elle retourne une structure de type DateTime[3],
  • L'affichage du résultat est mis en forme via la conversion par CDateFromUnoDateTime ou par la fonction Format (voir l'aide)

Code

En LibreOffice Basic:

Option Explicit

Sub DateTimeInfo()
    '''Affiche les informations de date et d'heure pour un fichier spécifique'''

    Dim oSFA        As Object
    Dim oDateFile   As New com.sun.star.util.DateTime
    Dim sUrl        As String
    
    sUrl = "/home/user1/Documents/foo.odt"
    oSFA = createUnoService("com.sun.star.ucb.SimpleFileAccess")
    
    oDateFile = oSFA.getDateTimeModified(convertToURL(sUrl))
    
    MsgBox CDateFromUnoDateTime(oDateFile),0, "DateTimeInfo()"
    
    With oDateFile
        MsgBox  "Date et heure de la dernière modification des informations de" & CHR$(10) & _
                sURL & " :"  &  CHR$(10) & CHR$(10) & _
                .year & format(.month, "-00-") & format(.day, "00") & " " & _
                format(.hours, " \@\ 00") & format(.minutes, "\:00\:") & format(.seconds, "00") _
                ,0, "DateTimeInfo()"
    End With
    
End Sub ' DateTimeInfo()

Exemple de fichier ODT pour tester la macro

Notes

  1. LibreOffice fournit une API (Application Programming Interface) permettant de contrôler les composants par différents langages de programmation.
  2. Voir la documentation de l'API pour l'interface XSimpleFileAccess
  3. Voir la documentation de l'API pour le DateTime struct.