Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 11. Januar 2014 07:15

goldcard
hat von CMS/ms gehört
Registriert: 11. Januar 2014
Beiträge: 2

Tage bis zu Datum ausgeben

Hallo an alle,


ich sitze seit 3 Tagen an einem Problem und sehe wohl mal wieder den Wald vor lauter Bäumen nicht mehr...

Mein Datum der jeweilig betreffenden Berechnung wird in diesem Format ausgegeben:

08 Mar, 2014


Nun möchte ich gerne dass mir die Ausgabe, die Anzahl der Tage bis zu diesem Datum ab jetzt gibt.

Zum Beispiel:

{date_now}   //11 Jan, 2014

{date_expire} //08 Mar, 2014

Mein Ergebnis soll nun sein

63

weil es sind noch 63 Tage bis zum 08 Mar, 2014


Ich bedanke mich sehr für eure Hilfe
Grüße Goldi

Beitrag geändert von goldcard (11. Januar 2014 07:18)

Offline

#2 11. Januar 2014 09:55

czarnowski
kennt CMS/ms
Registriert: 18. Oktober 2012
Beiträge: 457

Re: Tage bis zu Datum ausgeben

Datumsberechnungen überlasse ich immer Mysql - da gibt es einfach die besseren Möglichkeiten.

SELECT DATEDIFF('2014-3-8',CURDATE()) AS diff

Offline

#3 11. Januar 2014 10:20

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: Tage bis zu Datum ausgeben

Willkommen im Forum!

Zunächst ... Smarty ist "nur" eine Template-Engine (wenngleich eine durchaus leistungsfähige). Von daher solltest du nicht zuletzt aus Performance-Gründen Berechnungen soweit als möglich PHP überlassen.

Dann stellt sich die Frage, ob {date_now} und {date_expire} tatsächlich Funktionen sind, oder aber Variablen ({$date_now}, {$date_expire}).

Hatte dein Anliegen vor längerem mal in ähnlicher Weise zu lösen. Konkret ging es darum, die Anzahl von Tagen seit der Veröffentlichung eines News-Artikels auszugeben. Hab ich dann so umgesetzt

vor {floor(($smarty.now-$entry->postdate|strtotime)/86400)} Tagen veröffentlicht

Sollte dir als Denkanstoß weiterhelfen wink ...

Offline

#4 11. Januar 2014 11:26

Klenkes
Server-Pate
Ort: 89428 Syrgenstein
Registriert: 17. Dezember 2010
Beiträge: 1.437

Re: Tage bis zu Datum ausgeben

Falls dir Cybermans Denkanstoss nicht genügend Schwung mitgab wink , hier ein kleines CMSMS Plugin:
Download Plugin
(Fand ich letztes Jahr und passte es an CMSMS an)

Sieht dann für NEWS in etwa so aus:

{date_diff date1=$entry->postdate|date_format:"%m/%d/%Y" interval="days" date2="$smarty.now"}

Als Parameter gibt es:
Interval: days(default), weeks, years
assign

Offline

#5 11. Januar 2014 16:09

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: Tage bis zu Datum ausgeben

Cool, danke!

Mir ist jedoch, als ob wir dieses Plugin bereits im alten Forum mal am Wickel hatten ...

Offline

#6 11. Januar 2014 16:51

Klenkes
Server-Pate
Ort: 89428 Syrgenstein
Registriert: 17. Dezember 2010
Beiträge: 1.437

Re: Tage bis zu Datum ausgeben

cyberman schrieb:

Mir ist jedoch, als ob wir dieses Plugin bereits im alten Forum mal am Wickel hatten ...

Gut möglich.
In meinem Alter verschwimmen Raum und Zeit zunehmends... monkey

Wo wir schon dabei sind, was war denn das alte Forum? Wieso alt?

Offline

#7 11. Januar 2014 17:24

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: Tage bis zu Datum ausgeben

Klenkes schrieb:

Wo wir schon dabei sind, was war denn das alte Forum?

Meinte den deutschen Forenteil im .org Forum tongue .

Klenkes schrieb:

Wieso alt?

Weil es älter ist als das .de Forum  big_smile .

Offline

#8 11. Januar 2014 19:07

czarnowski
kennt CMS/ms
Registriert: 18. Oktober 2012
Beiträge: 457

Re: Tage bis zu Datum ausgeben

Mal eine einfache Basis für die gestellte Aufgabe - erwartet Datum im Mysql Format.
Kann man auch gut nach Bedarf ändern.

[== PHP ==]
<?php
#Tagedifferenz von now zu d1
# Aufrufbeispiel {daydiff d1='2014-3-8'}
function smarty_function_daydiff($params, &$template)
{
  $date1 = new DateTime("now");
  $date2 = new DateTime($params['d1']);    
  $interval = $date1->diff($date2);
  echo $interval->format('%a');
}
?>

Offline

#9 11. Januar 2014 20:28

czarnowski
kennt CMS/ms
Registriert: 18. Oktober 2012
Beiträge: 457

Re: Tage bis zu Datum ausgeben

Und hier noch schnell die bessere Basis mit einer Mysql Abfrage:

[== php ==]
<?php
#Tagedifferenz von curdate zu d1
# Aufrufbeispiel {daydiff d1='2014-3-8'}
function smarty_function_daydiff($params, &$template)
{  
  echo cmsms()->GetDb()->GetCol("SELECT DATEDIFF('".$params['d1']."',CURDATE())")[0];      
}
?>

Beitrag geändert von czarnowski (11. Januar 2014 20:29)

Offline

#10 15. Januar 2014 23:00

goldcard
hat von CMS/ms gehört
Registriert: 11. Januar 2014
Beiträge: 2

Re: Tage bis zu Datum ausgeben

Hallo, ich bedanke mich sehr für eure hilfreichen Antworten

Ich habe es jetzt wie folgt direkt im Template gelöst

{math equation="(y - x) / 86400" x=$smarty.now y=$tmp.date_expires_nice|strtotime format="%.0f"}

Viele Grüße Goldi

Offline