Datumsdiffernz
Verfasst: 02.07.2018 06:03
Hallo PB'ler,
ich bin jetzt schon mehrere Tage dabei zu versuchen die Differenz zwischen zwei Datumszeiten in genauer Auflistung von Jahre, Monate und Tage zu, mit PB eigenen Mitteln zu realisieren. Jeder Ansatz den ich versuchte schlug irgendwann, beim Test mit unterschiedlichem Datum, fehl.
Zum Beispiel die Differenz zwischen Heute und dem 31.01.2021 kann ich zwar in Tagen ermitteln aber die korrekte Ermittlung von Jahre, Monate und Tage geht fehl. Vielleicht hat ja jemand eine Idee oder mit rein PB Mitteln geht es nicht.
Ich habe mich jetzt doch entschieden meine bestes, nicht korrektes, Ergebnis zu posten: 
ich bin jetzt schon mehrere Tage dabei zu versuchen die Differenz zwischen zwei Datumszeiten in genauer Auflistung von Jahre, Monate und Tage zu, mit PB eigenen Mitteln zu realisieren. Jeder Ansatz den ich versuchte schlug irgendwann, beim Test mit unterschiedlichem Datum, fehl.
Zum Beispiel die Differenz zwischen Heute und dem 31.01.2021 kann ich zwar in Tagen ermitteln aber die korrekte Ermittlung von Jahre, Monate und Tage geht fehl. Vielleicht hat ja jemand eine Idee oder mit rein PB Mitteln geht es nicht.
Ich habe mich jetzt doch entschieden meine bestes, nicht korrektes, Ergebnis zu posten:
Code: Alles auswählen
#Tag = (24*60*60)
;vDate = Parsedate("%dd.%mm.%yyyy", "31.01.2021")
;vRestTage = ( vDate - Date()) / #Tag + 1
Procedure.s Restzeit(vDate.i, vRestTage.i)
Protected pResult.s, pDate.i, pJahre.i, pMonate.i, pTage.i
pJahre = (vRestTage/365)
pDate = AddDate(Date(), #PB_Date_Year, pJahre)
pTage = (vDate - pDate) / #Tag
pMonate = pTage/30
pDate = AddDate(pDate, #PB_Date_Month, pMonate)
pTage = (vDate - pDate) / #Tag
pResult = "NUR NOCH "
pResult + Str(pJahre)
If (pJahre=1): pResult + " Jahr ": Else: pResult + " Jahre ": EndIf
pResult + Str(pMonate)
If (pMonate=1): pResult + " Monat ": Else: pResult + " Monate ": EndIf
pResult + Str(pTage)
If (pTage=1): pResult + " Tag": Else: pResult + " Tage": EndIf
If (pJahre=0) And (pMonate=0): gFlag = #False: EndIf
ProcedureReturn pResult
EndProcedure