 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Fragen stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
17.03.2007, 05:53
|
#1
|
|
TP-Senior
Registriert seit: Sep 2003
Ort: Cabarete
|
Datumsberchnung - Differenz zwischen 2 Daten
HI!
habs gerade gebraucht und mir zusammen gebastelt. Vielleicht kanns einer gebrauchen:
PHP-Code:
<?php
// Differenz zwischen zwei Daten.
$datum1="12.12.2007";
$datum2="13.12.2008";
// Declare functions ---------------------------------------------------------------------------------------------------------
function condate($condate) {
$date_elements = explode(".",$condate);
return mktime(0,0,0,$date_elements[1],$date_elements[0],$date_elements[2]);
}
$sec1=condate($datum1); //Sekunden seit unix Timestamp für Datum1
echo "$sec1<br>";
$sec2=condate($datum2); //Sekunden seit unix Timestamp für Datum2
echo "$sec2<br>";
$secdiff = $sec2-$sec1; // Differenz der UnixTimestamp vergangenen Sekunden
echo "Sekunden:$secdiff<br>";
$minuten=$secdiff/60;
echo "Minuten:$minuten<br>";
$stunden = $minuten/60;
echo "Stunden:$stunden<br>";
$tage = $stunden/24;
echo "Tage:$tage<br>";
?>
|
|
|
17.03.2007, 07:11
|
#2
|
|
TP-Insider
Registriert seit: Nov 2006
Ort: Lübeck
|
Ich habe deine Funktion mal abgewandelt. Uhrzeitangaben sind nun auch moeglich.
PHP-Code:
<?php
// Differenz zwischen zwei Daten.
$date1="12.12.2007T16:00:00";
$date2="13.12.2008T16:00:05";
//$date3= "12.12.2008"; // geht so natuerlich auch. Uhrzeit ist dann 00:00:00
$diff_sekunden=0;
$sekunden=0;
$minuten=0;
$mod_minuten=0;
$stunden=0;
$mod_stunden=0;
$tage=0;
$mod_tage=0;
// Declare functions -
function difference_date($d1, $d2) {
return strtotime($d2)-strtotime($d1);
}
$diff_sekunden=difference_date($date1, $date2);
$tage=floor($diff_sekunden/86400);
$mod_tage=$diff_sekunden%86400;
$stunden=floor($mod_tage/3600);
$mod_stunden=$mod_tage%3600;
$minuten=floor($mod_stunden/60);
$sekunden=$mod_stunden%60;
echo $date1." - ".$date2."<br />";
echo "Differenz: ".$tage." Tage, ".$stunden." Stunden, ".$minuten." Minuten und ".$sekunden." Sekunden<br />";
?>
|
|
|
10.05.2007, 07:42
|
#3
|
|
TP-Veteran
Registriert seit: Jan 2004
Ort: Münster-Hiltrup
|
Hallo,
Kann mir mal einer erklären, warum das Script bei mir nicht läuft?
ausgegeben wird folgendens:
12.12.2007T16:00:00 - 13.12.2008T16:00:05
Differenz: 0 Tage, 0 Stunden, 0 Minuten und 0 Sekunden
Das ist doch wohl falsch oder?
|
|
|
10.05.2007, 08:13
|
#4
|
|
TP-Insider
Registriert seit: Nov 2006
Ort: Lübeck
|
Wenn ich mein Skript direkt kopiere und so benutze, kommt
"Differenz: 367 Tage, 0 Stunden, 0 Minuten und 5 Sekunden"
heraus.
Hast du einen Fehler beim Kopieren gemacht?
Wenn du PHP >5.0 benutzt, schreibe mal an den Anfang
Zitat:
error_reporting(E_STRICT);
date_default_timezone_set("Europe/Berlin");
|
(die zweite Zeile ist nur dafuer da, damit kein Warning ausgegeben wird).
Es sollten keine Fehlermeldungen oder Warnungen erscheinen.
Wenn du php 4 nutzt, verwende statt "E_STRICT" "E_ALL".
|
|
|
10.05.2007, 11:44
|
#5
|
|
TP-Veteran
Registriert seit: Jan 2004
Ort: Münster-Hiltrup
|
Danke für Deine Antwort,
hatte das 2. Script kopiert.
Das läuft bei mir nicht.
Habe es jetzt ein wenig aufpoliert mit Formularfeldern.
PHP-Code:
<?php
// Differenz zwischen zwei Daten.
$datum1=$_POST['datum1'];
$datum2=$_POST['datum2'];
// Declare functions ---------------------------------------------------------------------------------------------------------
function condate($condate) {
$date_elements = explode(".",$condate);
return mktime(0,0,0,$date_elements[1],$date_elements[0],$date_elements[2]);
}
$sec1=condate($datum1); //Sekunden seit unix Timestamp für Datum1
/*
echo "$sec1<br>"; */
$sec2=condate($datum2); //Sekunden seit unix Timestamp für Datum2
/*
echo "$sec2<br>"; */
$secdiff = $sec2-$sec1; // Differenz der UnixTimestamp vergangenen Sekunden
echo "Sekunden: $secdiff<br>";
$minuten=$secdiff/60;
echo "Minuten: $minuten<br>";
$stunden = $minuten/60;
echo "Stunden: $stunden<br>";
$tage = $stunden/24;
$formattage=round($tage,2);
echo "Tage: $formattage<br>";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>
<body>
<form id="form1" name="form1" method="post" action="">
<label for="textfield"></label>
<p>
Startjahr:
<input type="text" name="datum1" id="datum1" />
</p>
<p>
<label for="label"></label>
Endjahr:
<input name="datum2" type="text" id="label" value="<?= date("d.m.Y");?>" />
</p>
<p>
<label for="Submit"></label>
<input type="submit" name="Submit" value="berechnen" id="Submit" />
</p>
</form>
</body>
</html>
Geändert von MichaelM (10.05.2007 um 12:07 Uhr).
|
|
|
11.05.2007, 12:18
|
#6
|
|
TP-Veteran
Registriert seit: Jan 2004
Ort: Münster-Hiltrup
|
Noch einmal eine Frage,
berücksichtigt dieses Script auch Schaltjahre? 
|
|
|
11.05.2007, 12:26
|
#7
|
|
TP-Insider
Registriert seit: Nov 2006
Ort: Lübeck
|
Ja, beide Skripte beruecksichtigen das.
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| 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.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 12:43 Uhr.
|
 |