kostenloser Webspace werbefrei: lima-city


Zeit zwischen 2x Datum formatiert

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    gameflash

    gameflash hat kostenlosen Webspace.

    Hallo

    ich habe eine tag/kleine funktion">kleine Funktion
    um den Abstand zwischen Datum1 und Datum2 auszugeben

    // ----------------------------------------------------- 
    
    function get_timediff($date1,$date2=0) { 
    	
    	$tdate1 = strtotime($date1);
    	if (!empty($date2)) { $tdate2 = strtotime($date2); } 
    	else { $tdate2 = time(); } 
    	
    	if ($tdate2 < $tdate1) { 
    		$subTime = $tdate1 - $tdate2; 
    		$prefix = 'dauert noch'; 
    	}
    	else { 
    		$subTime = $tdate2 - $tdate1;
    		$prefix = 'vorbei seit'; 
    	}
    	
    	$y = floor($subTime/(60*60*24*365));
    	$d = ($subTime/(60*60*24))%365;
    	$h = ($subTime/(60*60))%24;
    	$i = ($subTime/60)%60;
    	$s = ($subTime)%60;
    	
    	
    	$xy = (1 == $y)?'Jahr':'Jahre'; 
    	$xd = (1 == $d)?'Tag':'Tage';
    	$xh = (1 == $h)?'Stunde':'Stunden';
    	$xi = (1 == $i)?'Minute':'Minuten';
    	$xs = (1 == $s)?'Sekunde':'Sekunden';
    	
    	$tstr = '... '.$prefix.':'; 
    	
    	if (0 < $y) { $tstr .= ' '.$y.' '.$xy; } 
    	if (0 < $d) { $tstr .= ' '.$d.' '.$xd; } 
    	if (0 < $h) { $tstr .= ' '.$h.' '.$xh; }  
    	if (0 < $i) { $tstr .= ' '.$i.' '.$xi; } 
    	if (0 < $s) { $tstr .= ' '.$s.' '.$xs; } 
    	
    	echo $tstr;
    	
    	return $subTime;
    
    }
    
    // -----------------------------------------------------


    wie bekomme ich da jetzt eine Angabe für Monate mit rein ?!
    ... so dass nicht 35 Tage sondern 1 Monat und 4 Tage kommt
    ABER ... nicht jeder Monat ist gleich lang, mal 30, mal 31, mal 28/29 Tage ... ?

    und evtl. auch noch Ausgabe für Wochen ?

  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Hallo,
    gameflash schrieb:
    wie bekomme ich da jetzt eine Angabe für Monate mit rein ?!

    Du müsstest als erstes abfragen, um welchen Monat es sich handelt. Das machst du am besten mit der date(); Funktion:
    date("n", $timestamp);

    Das liefert dir für den November eine 11 zurück. Das musst du jetzt für jeden Monat abfragen, der in deinem Zeitraum liegt. Nun kennst du die Länge der Monate, es sei denn, es ist der Februar dabei. Wenn der Zeitabstand den Februar einschließt, kannst als nächstes an Hand des Jahres herausfinden, ob es ein Schaltjahr ist:
    date("L", $timestamp);

    Das gibt "1" für ein Schaltjahr und an sonsten "0" zurück.
    Damit kannst du jetzt jeweils ausrechnen, wie groß der Zeitabstand ist. Wenn du nur abstände von etwa 35 Tagen hast, sollte das so schon reichen. Wenn du unter umständen aber auch einen Zeitabstand zwischen deinen beiden Zeitpunkten von mehreren Jahren hast, müsstest du noch eine
    while() {}
    -Schleife oder ähnliches einbauen, und dann jedes Jahr einzeln durchgehen.

    Du solltest außerdem beachten, dass die Standart PHP-Zeitfunktionen nur für Daten vom 13.12.1901 20:45:54 UTC bis zum 19.01.2038 03:14:07 UTC richtig funktionieren (Quelle). Um dies zu umgehen, kannst du beispielsweise diese Funktionssammlung verwenden.

    MFG THWBM
  4. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!