bin gerade dabei eine CMS-Seite für diesen Tag zu schreiben.
Und ich möchte diese Seite jedes Jahr wieder verwenden
D.H. die Berechnung des Datums soll für das laufende Jahr mit smarty erfolgen
Nur wie ?
im Prinzip kann man da rein mathematisch rangehen:
Der vierte Freitag kann frühestens auf den 22. Tag des Monats fallen ( d.h. es sind mindestens 3 ganze Wochen +1 Tag seit Anfang des Monats vergangen), wenn der Monat an einem Freitag anfängt,
und spätestens auf den 28. Tag fallen, wenn der Monat an einem Samstag anfing ( 4 ganze Wochen seit Anfang des Monats).
der späteste 3. Freitag kann auf den 21 Fallen und der früheste 5. Freitag kann auf den 29. fallen, daher gibts da keine Überschneidungen.
Die Bedingung wäre also “wenn $datum >= 22 && $datum <= 28 && $esIstFreitag”, dann ist es eindeutig der 4. Freitag.
$esIstFreitag wäre $smarty.now|date_format('N') == 5
Alternativ müsste strtotime('fourth friday of this month') in php gehen, das nur noch auf smarty ummünzen und mit date_format('z') auf den Tag des Jahres umrechnen und mit $smarty.now|date_format('z') vergleichen.
danke für die Antwort!
Ich habe mir ein Modul gemacht mit nützlichen Funktionen, die ich in den CMS-Seiten einbauen kann:
class myblackfriday extends myblackfriday_parent {
private $iResultFriday = null;
// returns timestamp on 00:00:00 of next Black Friday
function getBlackFridayTime($sYear = '') {
if ($this->iResultFriday == null) {
if (empty($sYear)) $sYear = date('Y');
$iFirstNovember = mktime(0,0,0,11,1,intval($sYear));
$iStartFriday = strtotime('Friday', $iFirstNovember);
$this->iResultFriday = $iStartFriday + (3 * 7 * 86400);
$sResultFriday = date('Ymd', $this->iResultFriday);
$sToDay = date('Ymd');
// today is less
if ($sResultFriday > $sToDay) {
return $this->iResultFriday;
}
// today
if ($sResultFriday == $sToDay) {
// adding seconds
$this->iResultFriday = time();
return $this->iResultFriday;
}
// next year
$this->iResultFriday = null;
$this->iResultFriday = $this->getBlackFridayTime(intval(date('Y')) + 1);
}
return $this->iResultFriday;
}
function getBlackFridayDate() {
return date('d.m.Y', $this->getBlackFridayTime());
}
// return bool
function isToDayBlackFriday() {
if (date('Y-m-d', $this->getBlackFridayTime()) == date('Y-m-d')) return true;
return false;
}
// return time
function getTimeToBlackFriday() {
return $this->getBlackFridayTime() - time();
}
function getDayToBlackFriday() {
return ceil(($this->getBlackFridayTime() - time()) / 86400);
}
}
``
(wie füge ich im Beitrag php-code ein? - erl.)
Das neue Forum unterstützt markdown
https://help.github.com/articles/creating-and-highlighting-code-blocks/
Danke 