Visualizza la data e l'ora in cui un file è stato creato o modificato per l'ultima volta

From The Document Foundation Wiki
Jump to navigation Jump to search
This page is a translated version of the page Macros/General/005 and the translation is 100% complete.
Other languages:
English • ‎français • ‎italiano

Descrizione

La funzione FileDateTime(Testo come stringa) accetta il percorso del file come stringa del parametro di input e restituisce i caratteri contenenti la data e l'ora della creazione o dell'ultima modifica di un file. Il risultato se non viene specificato alcun formato è: MM/DD/YYYY HH:MM:SS. Ad esempio MsgBox FileDateTime("/home/user1/Documents/foo.odt").

Questa funzione era infatti soggetta al bug tdf#63306 in alcune versioni intermedie di LibreOffice.

L'API di LibreOffice[1] consente di aggirare questo bug e offre anche altre potenti funzioni di accesso ai file.

L'esempio mostrato di seguito mostra come recuperare la data e l'ora di creazione o ultima modifica per un file tramite il metodo getDateTimeModified.[2]

Il metodo accetta un URL e restituisce una struttura chiamata DateTime[3]. La visualizzazione del risultato si ottiene mediante conversione tramite CDateFromUnoDateTime o tramite la funzione Format[4].

Codice

In LibreOffice Basic:

Option Explicit

Sub DateTimeInfo()
    '''Visualizza data e ora dell'ultima modifica per un file specificato'''

    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  "Data e ora dell'ultima modifica delle informazioni da" & 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()

Esempio di file ODT per testare la macro

Note

  1. L'API di LibreOffice (Application Programming Interface) consente l'interazione con vari linguaggi di programmazione.
  2. Si veda /ref/interfacecom_1_1sun_1_1star_1_1ucb_1_1XSimpleFileAccess.html Documentazione API per l'interfaccia XSimpleFileAccess.
  3. Si veda la documentazione dell'API per la struttura DateTime
  4. Si veda la text/sbasic/shared/03120301.html?DbPAR=BASIC documentazione per la funzione Format