z3ck3
2005-08-18, 13:03:17
Ich hab das problem, das bei dem Code Stunden und Sekunden vertauscht werden. Weiß aber net warum... Vielleicht kann mir ja jemand helfen.
mktime könnte die Ursache sein. Aber das doch richtig die Reihenfolge: Stunden Minuten Sekunden Monat Tag Jahr
Mein Datumsformat ist folgendes: Jahr Monat Tag Stunden Minuten Sekunden (benutze das überall, darum die zusätzlichen Funktionen etc.)
<?
function hfb_diftime($zeit, $zeit2 = "", $format = "%D %H %M %S") {
if (empty($zeit2)) {
$zeit2 = time();
} else {
$zeit2 = hfb_formatdate($zeit2, "YYYY MM DD hh mm ss");
$zeit2 = explode(" ", $zeit2);
$zeit2 = mktime($zeit2[5],$zeit2[4],$zeit2[3],$zeit2[1],$zeit2[2],$zeit2[0]);
}
$zeit = hfb_formatdate($zeit, "YYYY MM DD hh mm ss");
$zeit = explode(" ", $zeit);
$zeit = mktime($zeit[5],$zeit[4],$zeit[3],$zeit[1],$zeit[2],$zeit[0]);
if ($zeit == $zeit2) return 0;
if ($zeit < $zeit2) {
$diftime = $zeit2 - $zeit;
} else {
$diftime = $zeit - $zeit2;
}
$diftime_t = $diftime;
$vari["%D"] = floor($diftime_t / 86400);
$diftime_t = $diftime_t - ($vari["%D"] * 86400);
$vari["%H"] = floor($diftime_t / 3600);
$diftime_t = $diftime_t - ($vari["%H"] * 3600);
$vari["%M"] = floor($diftime_t / 60);
$diftime_t = $diftime_t - ($vari["%M"] * 60);
$vari["%S"] = $diftime_t;
$vari["%TH"] = floor($diftime / 3600);
$vari["%TM"] = floor($diftime / 60);
$vari["%TS"] = $diftime;
return strtr($format,$vari);
}
function hfb_formatdate($datum,$format="DD.MM.YY") {
if (empty($datum)) return;
$vari["YYYY"] = substr($datum,0,4);
$vari["YY"] = substr($datum,2,2);
$vari["MM"] = substr($datum,4,2);
$vari["MT"] = hfb_monattext(substr($datum,4,2));
$vari["DD"] = substr($datum,6,2);
$vari["hh"] = substr($datum,8,2);
$vari["mm"] = substr($datum,10,2);
$vari["ss"] = substr($datum,12,2);
return strtr($format,$vari);
}
function hfb_monattext($monat) {
$monat = intval($monat);
$ar[1] = "Januar";
$ar[2] = "Februar";
$ar[3] = "März";
$ar[4] = "April";
$ar[5] = "Mai";
$ar[6] = "Juni";
$ar[7] = "Juli";
$ar[8] = "August";
$ar[9] = "September";
$ar[10] = "August";
$ar[11] = "November";
$ar[12] = "Dezember";
return strtr($monat,$ar);
}
echo hfb_diftime("20041212111212", "20051212121212", "%TH Stunden unterschied insgesamt. Also %D Tage, %H Stunden, %M Minuten und %S Sekunden. %TS Sekunden gesammt.");
?>
ich glaub ich bin Blind. Vielleicht sollte ich doch Maurer werden :D
mktime könnte die Ursache sein. Aber das doch richtig die Reihenfolge: Stunden Minuten Sekunden Monat Tag Jahr
Mein Datumsformat ist folgendes: Jahr Monat Tag Stunden Minuten Sekunden (benutze das überall, darum die zusätzlichen Funktionen etc.)
<?
function hfb_diftime($zeit, $zeit2 = "", $format = "%D %H %M %S") {
if (empty($zeit2)) {
$zeit2 = time();
} else {
$zeit2 = hfb_formatdate($zeit2, "YYYY MM DD hh mm ss");
$zeit2 = explode(" ", $zeit2);
$zeit2 = mktime($zeit2[5],$zeit2[4],$zeit2[3],$zeit2[1],$zeit2[2],$zeit2[0]);
}
$zeit = hfb_formatdate($zeit, "YYYY MM DD hh mm ss");
$zeit = explode(" ", $zeit);
$zeit = mktime($zeit[5],$zeit[4],$zeit[3],$zeit[1],$zeit[2],$zeit[0]);
if ($zeit == $zeit2) return 0;
if ($zeit < $zeit2) {
$diftime = $zeit2 - $zeit;
} else {
$diftime = $zeit - $zeit2;
}
$diftime_t = $diftime;
$vari["%D"] = floor($diftime_t / 86400);
$diftime_t = $diftime_t - ($vari["%D"] * 86400);
$vari["%H"] = floor($diftime_t / 3600);
$diftime_t = $diftime_t - ($vari["%H"] * 3600);
$vari["%M"] = floor($diftime_t / 60);
$diftime_t = $diftime_t - ($vari["%M"] * 60);
$vari["%S"] = $diftime_t;
$vari["%TH"] = floor($diftime / 3600);
$vari["%TM"] = floor($diftime / 60);
$vari["%TS"] = $diftime;
return strtr($format,$vari);
}
function hfb_formatdate($datum,$format="DD.MM.YY") {
if (empty($datum)) return;
$vari["YYYY"] = substr($datum,0,4);
$vari["YY"] = substr($datum,2,2);
$vari["MM"] = substr($datum,4,2);
$vari["MT"] = hfb_monattext(substr($datum,4,2));
$vari["DD"] = substr($datum,6,2);
$vari["hh"] = substr($datum,8,2);
$vari["mm"] = substr($datum,10,2);
$vari["ss"] = substr($datum,12,2);
return strtr($format,$vari);
}
function hfb_monattext($monat) {
$monat = intval($monat);
$ar[1] = "Januar";
$ar[2] = "Februar";
$ar[3] = "März";
$ar[4] = "April";
$ar[5] = "Mai";
$ar[6] = "Juni";
$ar[7] = "Juli";
$ar[8] = "August";
$ar[9] = "September";
$ar[10] = "August";
$ar[11] = "November";
$ar[12] = "Dezember";
return strtr($monat,$ar);
}
echo hfb_diftime("20041212111212", "20051212121212", "%TH Stunden unterschied insgesamt. Also %D Tage, %H Stunden, %M Minuten und %S Sekunden. %TS Sekunden gesammt.");
?>
ich glaub ich bin Blind. Vielleicht sollte ich doch Maurer werden :D