Comment connaître la date et l'heure de création ou de dernière modification d'un fichier ?
TDF LibreOffice Document Liberation Project Blogs communautaires Weblate Nextcloud Redmine Ask LibreOffice Donner
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
- ↑ LibreOffice fournit une API (Application Programming Interface) permettant de contrôler les composants par différents langages de programmation.
- ↑ Voir la documentation de l'API pour l'interface XSimpleFileAccess
- ↑ Voir la documentation de l'API pour le DateTime struct.