Hallo zusammen,
ich habe eine Frage zum Splitten von Datumsangaben.
Angenommen, es ist ein Zeitraum gegeben, sagen wir in Form von
Diese Zeitangabe soll nun anhand von beliebig vielen weiteren Datumsangaben gesplittet werden, z.B. in Form von
Wenn ich alles auf eine Zeitachse runterbreche, erhält man die Gruppen:
2015-01-
01 bis 03 (slot 1), 04-05 (basis), 06-10 (slot 2) und 11-31 (wieder basis).
Die Slots können allerdings verschachtelt vorliegen, liegen jedoch stets innerhalb der Basis (einschl. Grenzen).
Hier eine grafische Darstellung mit verschachtelten Angaben (hoffentlich wirds überall korrekt dargestellt):
Was ich nun bräuchte, sind die einzelnen Zeiträume. Klingt eigentlich einfach, aber mir fällt einfach kein richtiger Algorithmus dazu ein, so dass ich mich riesig freuen würde, wenn mir jemand bei der Umsetzung helfen könnte. Problematisch ist dabei, dass einige Zeiträume (rot markiert) erst generiert werden müssen. Dazu gilt:
- fängt ein Slot an, kommt ein Tag zuvor ein Enddatum
- hört ein Slot auf, kommt ein Tag danach ein Startdatum
Welchen Ansatz könnte man hier anwenden? Bin leider total ratlos wann hier die neuen (roten) Element erstellt werden müssten (außer eben zu sagen "wenn sie nicht existieren". Wie würde man das programmatisch angehen?
Über jegliche Hilfe und/oder Anregungen würde ich mich sehr freuen!
Viele Grüße
Roman
ich habe eine Frage zum Splitten von Datumsangaben.
Angenommen, es ist ein Zeitraum gegeben, sagen wir in Form von
PHP-Code:
$basis = array( 'von' => '2015-01-01', 'bis' => '2015-01-31');
PHP-Code:
$slots = array( array( 'start' => '2015-01-01', 'end' => '2015-01-03'),
array( 'start' => '2015-01-06', 'end' => '2015-01-10')
);
2015-01-
01 bis 03 (slot 1), 04-05 (basis), 06-10 (slot 2) und 11-31 (wieder basis).
Die Slots können allerdings verschachtelt vorliegen, liegen jedoch stets innerhalb der Basis (einschl. Grenzen).
Hier eine grafische Darstellung mit verschachtelten Angaben (hoffentlich wirds überall korrekt dargestellt):
Code:
|---------------------------------------------------------| Basis |-------| Slot |-------| Slot |-------| Slot |-------| Slot |-| Slot |-------| Slot Runterbrechen auf eine Achse: |--|--|----|--|-|----|-||-------------|-------|-----------| neue Grenzen: S-ES-ES----ES-EUS---ES-EUS-----------ES-------ES----------E S..Start,E..Ende, U..Start=Ende
- fängt ein Slot an, kommt ein Tag zuvor ein Enddatum
- hört ein Slot auf, kommt ein Tag danach ein Startdatum
Welchen Ansatz könnte man hier anwenden? Bin leider total ratlos wann hier die neuen (roten) Element erstellt werden müssten (außer eben zu sagen "wenn sie nicht existieren". Wie würde man das programmatisch angehen?
Über jegliche Hilfe und/oder Anregungen würde ich mich sehr freuen!
Viele Grüße
Roman
Kommentar