Ich habe mir das mal etwas ausführlicher geschrieben und durchdacht, auch Deine Methode probiert, aber es mag nicht funktionieren...
Ich denke wohl zu kompliziert.
So hab ich es momentan:
PHP-Code:
<?php
$startDate = $this->startDate ? $this->parseDate('l, j. F Y', $this->startDate) : '';
$endDate = $this->startDate != $this->endDate ? ' bis '.$this->parseDate('l, j. F Y', $this->endDate) : ' bis '.$this->parseDate('l, j. F Y', $this->startDate);
$startTime = $this->addTime == 1 ? $this->parseDate('H:i', $this->startTime) : '';
$endTime = $this->addTime == 1 ? $this->parseDate('H:i', $this->endTime) : '';
$dateString = $this->startDate == $this->endDate ? $startDate.' ('.$startTime.' Uhr) '.$endDate.' ('.$endTime.' Uhr)' : $startDate.' ('.$startTime.' Uhr bis '.$endTime.' Uhr)';
$dateString = $this->addTime != 1 ? $startDate.$endDate : $dateString;
?> <span class="datetime"><?php echo $dateString; ?></span><?php endif; ?>
Das ergibt dann:
- RICHTIG: startdate, enddate --> Samstag, 12. April 2014 bis Mittwoch, 16. April 2014
- FALSCH: startdate, starttime --> Samstag, 12. April 2014 (14:09 Uhr bis 14:09 Uhr) --> Hier ist die Endzeit ausgegeben, soll aber nicht.
- FALSCH: startdate, starttime == endtime --> Samstag, 12. April 2014 (14:10 Uhr bis 14:10 Uhr) --> Hier ist die Endzeit ausgegeben, soll aber nicht.
- FALSCH: startdate --> Montag, 12. Mai 2014 bis Samstag, 12. April 2014 --> Hier ist die Endzeit und ein falsches Enddatum(!!!) ausgegeben, soll aber nicht.
- RICHTIG: startdate, enddate --> Montag, 12. Mai 2014 bis Donnerstag, 12. Juni 2014
- RICHTIG: startdate, enddate, starttime, endtime --> Montag, 12. Mai 2014 (14:12 Uhr bis 15:00 Uhr)
- RICHTIG: startdate, starttime != endtime --> Samstag, 12. April 2014 (15:55 Uhr bis 23:00 Uhr)
Selbes Spiel mit Deiner Methode ergibt:
- FALSCH: startdate, enddate --> Samstag 12. April 2014 - Mittwoch 16. April 2014 23:59 Uhr --> Hier ist die Endzeit ausgegeben, soll aber nicht.
- RICHTIG: startdate, starttime --> Samstag 12. April 2014 14:09 Uhr
- RICHTIG: startdate, starttime == endtime --> Samstag 12. April 2014 14:10 Uhr
- FALSCH: startdate --> Montag 12. Mai 2014 - 23:59 Uhr --> Hier ist die Endzeit ausgegeben, soll aber nicht.
- FALSCH: startdate, enddate --> Montag 12. Mai 2014 - Donnerstag 12. Juni 2014 23:59 Uhr --> Hier ist die Endzeit ausgegeben, soll aber nicht.
- RICHTIG: startdate, enddate, starttime, endtime --> Montag 12. Mai 2014 14:12 Uhr - Donnerstag 12. Juni 2014 15:00 Uhr
- RICHTIG: startdate, starttime != endtime --> Samstag 12. April 2014 15:55 Uhr - 23:00 Uhr
Ich verstehe es einfach nicht, denke vielleicht zu komplex, keine Ahnung.
Was mich eben wundert, das bei beiden Methoden Fehler auftauchen. Ich ging davon aus, das Deine Methode passt. Schon allein deswegen, weil im Thread hier nichts anderes berichtet wurde?!?
Es sollte ja Contao Versionsunabhängig sein, diese ganze Berechnung...
ToM
Nachtrag:
So scheint es nun sauber zu funktionieren:
PHP-Code:
<?php
$startDate = $this->startDate ? $this->parseDate('l, d. F Y', $this->startDate) : '';
$startDateShort = $this->startDate ? $this->parseDate('D, j. M. Y', $this->startDate) : '';
$endDate = $this->startDate != $this->endDate && $this->endDate ? ' bis '.$this->parseDate('l, d. F Y', $this->endDate) : '';
$endDateShort = $this->startDate != $this->endDate && $this->endDate ? ' bis '.$this->parseDate('D, j. M. Y', $this->endDate) : '';
$startTime = $this->addTime == 1 ? $this->parseDate('H:i', $this->startTime) : '';
$endTime = $this->addTime == 1 ? $this->parseDate('H:i', $this->endTime) : '';
$dateString = $this->startDate == $this->endDate || $this->startTime == $this->endTime ? $startDate.' (ab '.$startTime.' Uhr)' : $startDate.' (ab'.$startTime.' Uhr bis '.$endTime.' Uhr)';
$dateStringShort = $this->startDate == $this->endDate || $this->startTime == $this->endTime ? $startDateShort.' (ab'.$startTime.' Uhr)' : $startDateShort.' (ab'.$startTime.' Uhr bis '.$endTime.' Uhr)';
$dateString = $this->addTime != 1 ? $startDate.$endDate : $dateString;
$dateStringShort = $this->addTime != 1 ? $startDateShort.$endDateShort : $dateStringShort;
?> <span class="datetime"><?php echo $dateString; ?></span>