aber das Problem sind tatsächlich die Tage. Monate und Jahre lassen sich ja problemlos über _"DateDiff" bestimmen.
Die "_DateDiff" - Funktion gibt auch die Tagesanzahl korrekt wieder (3405) - aber mir ist keine Formel bekannt, um sie korrekt in Jahre und Monate umzurechnen.
mein Ansatz war und ist von der größten Einheit (Jahre) bis zur kleinsten Einheit (Sekunden) jeweils die Differenz zu ermitteln und diese mit _DateAdd zum Startdatum zu addieren. Da ich die endgültige Lösung erst danach hinei editiert habe und mitlerweile noch einmal für die Ausgabe angepasst habe, noch einnmal das Skript:
#include <Date.au3>
Global $sOrder = 'YMDhns', $sResult
Global $bDebug = True ;False ;zu Verständniszwecken können Debug Ausgaben angezeigt werden
Global $dtEnd = "2018/10/26 19:03:43"
Global $dtStart = "2009/06/30 14:05:16"
For $i = 1 To StringLen($sOrder)
$sTyp = StringMid($sOrder, $i, 1)
$iRes = _Diff_NewStart($dtStart, $dtEnd, $sTyp)
;If $iRes < 10 Then $iRes = '0' & $iRes
$sResult &= $iRes
Switch $i
Case 1, 2
$sResult &= '/'
Case 3
$sResult &= ' '
Case 4, 5
$sResult &= ':'
EndSwitch
Next
MsgBox(64, 'Differenz', $sResult)
Func _Diff_NewStart($dt1, $dt2, $sTyp)
Local $iResult = _DateDiff($sTyp, $dt1, $dt2)
$dtStart = _DateAdd($sTyp, $iResult, $dt1)
If $bDebug Then ConsoleWrite($sTyp & ': ' & $iResult & @TAB & 'Neu: ' & $dtStart & @CRLF)
Return $iResult
EndFunc ;==>_Diff_NewStart
Alles anzeigen
obige Skript liefert mit deinen Orginaldaten: 9/3/26 4:58:27
wenn ich die Uhr-Zeiten vertausche: 9/3/25 19:1:33. Die Ergebnisse sind Jahre/Monate/Tage Stunden:Minuten:Sekunden formatiert.
Man kann also daran erkennen, daß die Macher der Date.au3 alles was nötig ist bereits berücksichtigt haben. Und falls du nicht die letzten Millisekunden bei der Berechnung herausquetschen musst/willst ist diese Art zu lösen die Bequemste.