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

    From The Document Foundation Wiki
    This page is a translated version of the page Macros/General/005 and the translation is 100% complete.


    Other languages:

    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.