Alter errechnen

Alles, was PHP betrifft, kann hier besprochen werden.

Alter errechnen

Postby MichiMEM » 31. January 2005 10:39

Ich habe - endlich nach langem Suchen - ein tolles Script gefunden, mitdem ich mein Alter anzeigen kann. In Jahr, Tage, Stunden, Minuten und Sekunden.
Leider ist das JavaScript, sowas hätte ich aber schon ganz gerne in PHP.

Beispiel: http://www.javarea.de/index.php3?openca ... ngen&id=79

Die Zeit muss NICHT laufen (wie in dem Beispiel), es reicht voll und ganz, wenn ich es mir ausgebeben (echo oder print) lassen kann.

Hat jemand ein solches Script rein ZUFÄLLIG auf seiner Platte :-D ?
help

Es kann aber auch ein script sein, dass mir anzeigt, was für ein genaueres Datum wir vor x Jahren hatten.
z.B 18 Jahre.

ich dachte mir das so:
$jahr = 18;

$time = (time()-60*60*24*365*$jahr);
print date("d.m.Y", $time);

da aber auf den Tag genau 568080000 sekunden sind, aber $time mir 539535485 ausgibt, habe ich eine ungenauere Datumsangabe :-(

Ich habe nun auch die 365 (Tage) durch 365.25 ersetzt (wegen Schaltjahr), kommt zwar dem geünwschtem Ergebnis ziemlich nahe, aber dennoch sehr ungenau :-(
Alles ist wie immer, nur schlimmer!
MichiMEM
 
Posts: 8
Joined: 04. September 2003 15:19
Location: Hagen

Postby Wiedmann » 31. January 2005 16:39

Hat jemand ein solches Script rein ZUFÄLLIG auf seiner Platte

Das Script dort ist eh irgendwie daneben... Könnte in PHP aber ungefähr so aussehen:
Code: Select all
<pre>
<?php
function birth_to_date($year = false, $month = false, $day = false, $hour = 0, $minute = 0, $second = 0) {
    if (((3 != func_num_args()) && (6 != func_num_args())) ||
        (false == checkdate(intval($month), intval($day), intval($year))) ||
        (0 > intval($hour)) || (23 < intval($hour)) ||
        (0 > intval($minute)) || (59 < intval($minute)) ||
        (0 > intval($second)) || (59 < intval($second))) {
        return false;
    }

    $dBirthday = cal_to_jd(CAL_GREGORIAN, intval($month), intval($day), intval($year));
    $dToday = cal_to_jd(CAL_GREGORIAN, date('n'), date('j'), date('Y'));
    $tBirthday = mktime(intval($hour), intval($minute), intval($second));

    if (3 == func_num_args()) {
        $tToday = mktime(0, 0, 0);
    } else {
        $tToday = mktime();
    }

    if (0  > ($tToday - mktime(intval($hour), intval($minute), intval($second), intval($month), intval($day)))) {
        $birth_to_date['years'] = date('Y') - intval($year) - 1;
    } else {
        $birth_to_date['years'] = date('Y') - intval($year);
    }

    $birth_to_date['days'] = $dToday - $dBirthday;
    $birth_to_date['seconds'] = ($birth_to_date['days'] * 60 * 60 * 24) + ($tToday - $tBirthday);
    $birth_to_date['minutes'] = intval($birth_to_date['seconds'] / 60);
    $birth_to_date['hours'] = intval($birth_to_date['minutes'] / 60);

    return $birth_to_date;
}

echo var_dump(birth_to_date(2004,12,31,23,59,59));
?>
</pre>


Die Zeit muss NICHT laufen (wie in dem Beispiel),

Das würde auch nur mit einer clientseitigen Scriptsprache wie JS gehen.

Es kann aber auch ein script sein, dass mir anzeigt, was für ein genaueres Datum wir vor x Jahren hatten.

Sowas?
Code: Select all
<?php
    $jahr = 18;
    echo date('l dS of F Y', strtotime($jahr.' years ago'));
?>
Wiedmann
AF Moderator
 
Posts: 17102
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany


Return to PHP

Who is online

Users browsing this forum: No registered users and 58 guests