Vierter Freitag im November in smarty?

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 :grinning: