Alles was Du brauchst sind die Zellwerte und nicht die Strings, die je nach Voreinstellung auch mal wechseln können. Oder wenn Du schon Strings verarbeitest, etwa weil das Tabellendokument falsche Strings anstelle von Werten enthält, dann solltest Du einfach den String in ein ISO-date umwandeln. Mit service FunctionAccess lässt sich dann relativedelta wie folgt errechnen:
ctx = uno.getComponentContext()
smgr = ctx.ServiceManager
srv = smgr.createInstance('com.sun.star.sheet.FunctionAccess')
time1 = srv.callFunction("VALUE", (t1,))
y2 = srv.callFunction("YEAR", (t2,))
m2 = srv.callFunction("MONTH", (t2,))
d2 = srv.callFunction("DAY", (t2,))
time2 = srv.callFunction("DATE", (y2, m2 +1, d2))
if time1 < time2:
t1 und t2 sind Zellwerte oder ISO-Strings (yyyy-mm-dd)
VALUE gibt das korrekte Datum wenn das Argument ein ISO-String ist. Andere Strings sind unsicher. EIn numerischer Zellwert bleibt unverändert.
YEAR,MONTH, DAY funktionieren ebenfalls mit ISO-Strings und Zahlenwerten gleichermaßen. DATE akzeptiert 3x Integer oder 3 Ziffern-Strings wobei man mit dieser Funktion auch Zeitsprünge korrekt berechnen kann, z.B. DATE(2022;month +1;0) ist der letzte Tag von month. oder DATE(2022;5;90) => 29.07.22
Im übrigen löse ich solche Affären grundsätzlich auf die Schnelle “on sheet” und niemals mit Makros. Wenn ich programmieren will dann brauche ich keine Tabellenkalkulation. Und wenn ich eine Tabellenkalkulation nutze dann will ich eigentlich gar nicht programmieren.