php.de

Zurück   php.de > php.de Intern > Wiki Diskussionsforum > Tutorials

Tutorials Hier findest Du Tutorials, welche nach und nach ein fertiges Script ergeben. Sehen, lernen & verstehen!

Antwort
 
LinkBack (3) Themen-Optionen Thema bewerten
Alt 03.02.2008, 14:15  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard PHP: Anzahl der Tage bis Tag X (Countdown)

Hallo.

Oft will man die Tage bis zu einem gewissen Ereignis zählen. Diese wären zum Beispiel der nächste Geburtstag, Weihnachten, Silvester, Namenstag von Tante Susi, etc.

Um dies mit PHP zu realisieren, bedarf es nur ein paar Zeilen Code. Das Prinzip ist sehr einfach:

Man nimmt den Zeitstempel des gewünschten Datums, zieht den aktuellen ab und erhält dadurch die Dauer bis zu diesem Ereignis in Sekunden.

Danach dividiert man diese Anzahl der Sekunden durch die Sekunden eines Tages (60 * 60 * 24) und rundet das Ergebnis auf.

VoilÃ*: Die Anzahl der Tage bis Tag X..

ich habe das ganze in eine Funktion DaysUntilX() gepackt.

mfg
Andi

PHP-Code:
<?php

  
function DaysUntilX($day,$month,$year){
    
$dayX mktime(0,0,0,$month,$day,$year); // Timestamp of day X

    
$now time(); // current timestamp

    
$diff $dayX $now// seconds until day X

    
$daysceil($diff/(60*60*24)); 

     return 
$days;
  }

print 
DaysUntilX(5,6,2008); // days until 5th of June 2008
?>
DER_Brain ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 03.02.2008, 15:22  
Erfahrener Benutzer
 
Registriert seit: 16.07.2005
Beiträge: 1.007
PHP-Kenntnisse:
Fortgeschritten
brian johnson befindet sich auf einem aufstrebenden Ast
Standard

und hier um vom unix timestamp, zumindest in PHP 5.2, wegzukommen>

PHP-Code:
 <?php

$diff
=new day_difference('01.01.2900','01.01.3000',new DateTimeZone('Europe/Berlin'));
echo 
$diff->result().'
'
;

$diff=new day_difference('1000-01-01T15:19:21+00:00','1100-01-01T15:19:21+00:00',new DateTimeZone('Europe/Berlin'));
echo 
$diff->result().'
'
;;

// Geht auch negativ, d.h. wieviele tage sind vergangen
$diff=new day_difference('Fri, 22 Dec 2000 16:01:07 +0200','Thu, 21 Dec 2000 16:01:07 +0200',new DateTimeZone('Europe/Berlin'));
echo 
$diff->result();

class 
day_difference
{
    protected 
$startdate;
    protected 
$enddate;
    protected 
$result;

    public function 
__construct($startdate,$enddate,datetimezone $datetimezone=NULL)
    {
        
$this->startdate=new DateTime($startdate,$datetimezone);
        
$this->enddate=new DateTime($enddate,$datetimezone);

    }

    public function 
result()
    {
        if(isset(
$this->result)) return $this->result;

        
$this->result=($this->enddate->format('z')+1)-($this->startdate->format('z')+1);
        if(
$this->startdate->format('Y')!==$this->enddate->format('Y'))
        {
            
$yeardifference=$this->enddate->format('Y')-$this->startdate->format('Y');
            
$this->result+=$yeardifference*365;
        }

        return 
$this->result;
    }
}

?>
wer lust hat, könnte jetzt bei den jahren noch auf schaltjahre prüfen...
__________________
PHP4?!?>>>Aktuelle PHP Version: 5.2.11 || 5.3.0
Suse 11.2 *vorfreude*
brian johnson ist offline   Mit Zitat antworten
Alt 03.02.2008, 15:25  
Moderator
 
Benutzerbild von agrajag
 
Registriert seit: 02.10.2006
Beiträge: 3.820
PHP-Kenntnisse:
Fortgeschritten
agrajag wird schon bald berühmt werdenagrajag wird schon bald berühmt werden
Standard

Ohne mir das jetzt (inhaltlich) genauer angeschaut zu haben, ein kleiner Kritikpunkt:

Entweder deutsch oder englisch. Aber ein Mischmasch aus deutsch (monat, tar, jahr, zieltag, tage) und englisch (now, daysUnteilX()) ist einfach unschön
__________________
Today you...Tomorrow me.
agrajag ist offline   Mit Zitat antworten
Alt 04.02.2008, 17:19  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@brian johnson:
Auch ne nette Lösung, aber gibts nen guten Grund, um vom UNIX Timestamp wegzugehen? Hab in die Richtung vorher noch nie was gehört..

@Agrajag:

Ja, hast natürlich recht.. hab das mal geändert...
War nur schnell hingetippt, da achte ich ned wirklich auf sowas..

lg
Andi
DER_Brain ist offline   Mit Zitat antworten
Alt 04.02.2008, 17:57  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Ja, hast natürlich recht.. hab das mal geändert...
War nur schnell hingetippt, da achte ich ned wirklich auf sowas..
Grade in Tutorials wär es schön, wenn dann etwas mehr auf die Form geachtet werden würde und auch noch ein kleiner Bugreport: Gibt man das heutige Datum ein, wird "-0" zurückgegeben

Danke schön aber auf jeden Fall @DER_Brain und @brian johnson, auch für die Titelwahl mit dem "PHP: " Prefix!
Zergling-new ist offline   Mit Zitat antworten
Alt 04.02.2008, 18:15  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

@DER_Brain: Beim Timestamp hast du das Problem dass er nur zwischen 1970 und 2038 gilt. Daher wird der Timestamp ab dem 19 Januar 2038 ein Problem bekommen!

Der Timestamp wird intern als 32bit Wert gerechnet daher dieser Overflow. Helfen würde wenn man einfach den Wert auf 64bit erhöht. Geiles Zitat dazu: "... which will buy the timestamp a "bit" more time!" Find ich ganz gut
Flor1an ist offline   Mit Zitat antworten
Alt 04.02.2008, 19:10  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von RaZoR
"... which will buy the timestamp a "bit" more time!"
hehe
Zergling-new ist offline   Mit Zitat antworten
Alt 04.02.2008, 19:45  
Erfahrener Benutzer
 
Benutzerbild von DER_Brain
 
Registriert seit: 18.04.2005
Beiträge: 1.541
PHP-Kenntnisse:
Fortgeschritten
DER_Brain ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Zergling:
okay, in zukunft werd ich auf sowas achten..
Habs nur für die eigene Anwendung kurz hingetippt und mir dann gedacht: kannn man ja einbringen.

Bzgl. heutiger Tag: Ja ich weiß, man könnte natürlich auch ne Klasse machen die dann nachsieht ob tag schon vorbei, etc. oder gleich den tag fürs nächste jahr vorberechnet, etc.
War aber ned das ziel dieser Funktion



@Razor:
Das mit dem Timestamp wusste ich zwar, jedoch nicht, dass mit day_difference etc. weiter in die Zukunft gerechnet werden kann..
Danke für den Hinweis!



lg
Andi

PS: ".. which will buy the timestamp a "bit" more time!"
DER_Brain ist offline   Mit Zitat antworten
Alt 04.02.2008, 19:51  
da schreibt der ElePHPant
 
Benutzerbild von Flor1an
 
Registriert seit: 18.06.2008
Beiträge: 8.903
PHP-Kenntnisse:
Fortgeschritten
Flor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer AnblickFlor1an ist ein wunderbarer Anblick
Standard

Ja DateTime arbeitet intern mit 64 Bit! Und DER Timestamp hält dann noch etwa 290 Billionen Jahre ... ähm joa obs dann noch PCs in herkömmlicher Art gibt? Und ob dann noch unsere PHP Skripte genutzt werden? Ich glaube ja eher nicht!

Achja weiß jemand in wieweit DateTime() in die Vergangenheit zurück geht? Genauso wie in die Zukunft oder arbeitet das auch ab dem 1.1.1970?? Die Frage ist hier signed oder unsigned
Flor1an ist offline   Mit Zitat antworten
Alt 04.02.2008, 20:33  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von RaZoR
Ja DateTime arbeitet intern mit 64 Bit! Und DER Timestamp hält dann noch etwa 290 Billionen Jahre ... ähm joa obs dann noch PCs in herkömmlicher Art gibt? Und ob dann noch unsere PHP Skripte genutzt werden? Ich glaube ja eher nicht!
Hier fällt mir wieder der Spruch ein: "... lassen Sie uns wissen wie das Universum endet" aus:
http://www.phpfriend.de/forum/ftopic63129.html

xD
Zergling-new ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

LinkBacks (?)
LinkBack to this Thread: http://www.php.de/tutorials/45435-php-anzahl-der-tage-bis-tag-x-countdown.html
Erstellt von For Type Datum
wieviele tage bis silvester - iZito This thread Refback 25.05.2011 16:02
tage-zählen - Softonic Google Suche This thread Refback 30.10.2010 01:54
countdown-tage - Softonic Google Suche This thread Refback 05.10.2010 21:44

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Max Anzahl Checkboxen Hu5eL JavaScript, Ajax und mehr 2 25.06.2008 15:37
[Erledigt] Anzahl Tage zwischen 2 Unix Timestamps PHP Tipps 2006 8 11.05.2006 09:00
vergangene Anzahl Tage ermitteln... PHP Tipps 2006 3 30.04.2006 18:17
Anzahl der Tage Chrescht PHP Tipps 2006 2 04.04.2006 08:43
Anzahl Tage eines vergangenen Monats josch1305 PHP Tipps 2006 3 23.03.2006 13:45
Anzahl Tage zw. 2 Datumsangaben heohni PHP Tipps 2006 5 23.02.2006 10:02
Tage seit Timestamp Datenbanken 7 08.05.2005 14:36
php in ein JavaScript Countdown einbinden! Boennchen PHP Tipps 2005 11 26.04.2005 13:41
Wie kann ich den Countdown von der Stautsleiste in den Body HTML, Usability und Barrierefreiheit 17 25.04.2005 22:04
Dringend! PHP, JScript und SQL - countdown PHP-Fortgeschrittene 2 01.03.2005 23:50
problem (countdown) HTML, Usability und Barrierefreiheit 8 07.11.2004 23:08
Tage eines Monats PHP Tipps 2004 1 29.09.2004 15:51
[Erledigt] Countdown problem! HTML, Usability und Barrierefreiheit 3 28.07.2004 11:59
javascript countdown in while scheife Ohrwurm83 PHP Tipps 2004 1 02.07.2004 16:50
[Erledigt] Countdown HTML, Usability und Barrierefreiheit 2 27.06.2004 02:32

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php countdown, tage countdown, countdown php, tages countdown, countdown tage, welcher tag ist in x tagen, wie viele tage bis zum geburtstag, php countdown tage, php tage bis, php tage, wieviel tage bis zum geburtstag, wie viele tage noch bis zum geburtstag, in wieviel tagen hab ich geburtstag, wie viele tage bis zu meinem geburtstag, in wieviel tagen habe ich geburtstag, countdown mit php, tage zählen countdown, countdown geburtstag, countdown in php, php tag

Alle Zeitangaben in WEZ +2. Es ist jetzt 02:17 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.