Libre Office Basic - CDateToUnoDateTime und Format

Liebe Community, ich suche gerade eine Lösung zu folgendem Problem:

Vor längerer zeit hatte ich mir eine kleine Routine geschrieben, um LibreOffice-Dokumente zu sichern. Dazu lege ich, wenn noch nicht vorhanden, im aktuellen Ordner einen Unterordner “_historie” an und kopiere dort die aktuelle Datei rein, wobei ich den Dateinamen aus dem Namen der aktuellen Daten plus einen Timestamp zusammenbaue. Das Format soll dann z.B. “NameDerAktuellenDatei - 2025-02-28_16-29-12.ods” lauten. Das hatte bis zum 05.03.25 auch korrekt funktioniert. Seitdem 05.03.25 sieht der Dateiname nun folgendermaßen aus: “NameDerAktuellenDatei - 2025-02-28_16:29:12.ods”, was mir beim sichern auf ein in NTFS formatiertes externes USB-Laufwerk Probleme bereitet. Dazwischen wurde zu LibreOffice ein Update eingespielt von Version 24.8.4-2 → 25.2.1-2.

Den Zeitstempel habe ich folgendermaßen erstellt:

Sub TimeStampMsgCUS()
    Dim oDateTime As Object
    Dim currentDate As String
    Dim currentTime As String
    Dim sTStamp as string
    
    ' Erstellen Timestamp
    oDateTime = createUnoService("com.sun.star.util.DateTime")
    currentDate = Format(Date, "yyyy-MM-dd")
    currentTime = Format(Time, "hh-mm-ss")    

    sTStamp = currentDate & "_" & _
              currentTime

	MsgBox(sTStamp)

End Sub

Dies ergibt aber seit dem Update
grafik

Die Routine habe ich bereits länger im Einsatz und bis vor besagtem Update hatte diese anstandslos funktioniert. Auch bei der aktuell bei mir installierten Version ist das noch der Fall:

Version: 25.2.2.2 (X86_64) / LibreOffice Community
Build ID: 520(Build:2)
CPU threads: 8; OS: Linux 6.13; UI render: default; VCL: gtk3
Locale: de-DE (de_DE.utf8); UI: de-DE
25.2.2-1
Calc: CL threaded

Das taucht bei mir zuerst in
.
Version: 25.2.0.3 (X86_64) / LibreOffice Community
Build ID: e1cf4a87eb02d755bce1a01209907ea5ddc8f069
CPU threads: 6; OS: Linux 6.4; UI render: default; VCL: kf5 (cairo+xcb)
Locale: de-DE (de_DE.UTF-8); UI: de-DE
Calc: threaded
.
auf.
.
Bei der Version
Version: 24.8.6.2 (X86_64) / LibreOffice Community
Build ID: 6d98ba145e9a8a39fc57bcc76981d1fb1316c60c
CPU threads: 6; OS: Linux 6.4; UI render: default; VCL: kf5 (cairo+xcb)
Locale: de-DE (de_DE.UTF-8); UI: de-DE
Calc: threaded
.
ist das wie von Dir geplant.
.
Was übringens nicht nötig ist: oDateTime - benutzt Du doch nachher sowieso nicht.
.
Kannst Du das als Bug melden und hier posten? Im Bugtracker unter https://bugs.documentfoundation.org/ finde ich dazu bisher keine Meldung.

Alles klar, vielen Dank für’s nachstellen; ich hab mal was gepostet

https://bugs.documentfoundation.org/show_bug.cgi?id=166342

Habe es auch zuvor extra noch auf einer virtuellen Windows-Maschine nachvollzogen, da hatte ich noch die Version 24.8.4 - da lief es erwartungsgemäß korrekt, nach dem Update auf die Version 25.2.2 kam beim Versuch, die Datei zu schreiben, erwartungsgemäß ein Laufzeitfehler wegen der Doppelpunkte im Dateinamen, Linux verkraftet das.

Ich habe mit jetzt die folgende Variante überlegt (bzw. zusammen gegoogelt):

Sub TimeStampMsgNow()
    'Dim oDateTime As Object
    Dim currentDate As String
    Dim currentTime As String
    Dim sTStamp as string
    
    ' Erstellen Timestamp
    ' oDateTime = createUnoService("com.sun.star.util.DateTime")
    currentDate = Year(Now()) & "-" & Right("0" & Month(Now()),2)  & "-" & Right("0" & Day(Now()),2)
    currentTime = Right("0" & Hour(Now()),2)  & "-" & Right("0" & Minute(Now()),2) & "-" & Right("0" & Second(Now()),2)

    sTStamp = currentDate & "_" & _
              currentTime

	MsgBox(sTStamp)

End Sub

Ich denke, für meine Zwecke sollte das passen.

Ich habe das einmal bestätigt. Bisher habe ich das auch immer so gemacht, wie Du es mit der neuen Variante gemacht hast.

1 Like