und ich würde mir aus den ganzen einzeldaten dann mit mktime nen timestamp machen. Da bekommst du dann zwei Zahlen für jede Zeit.
Ziehst du nu die Kleinere von der Grösseren ab, hast du den zeitlichen Abstand in sekunden von den zwei Zeiten. dann nur noch schauen ob es größer 60 (eine Minute) oder grösser 60*60*24 (ein Tag) ist und schon weißt du ganz genau bescheid.
Du musst allerdings vorher schon deinen Zeitstring parsen.
Ungefähr so:
|
PHP Source code
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
function parseTimeStr($str) // Format vom String: '0000-00-00 00:00:00'
{
if($str == "") return false;
$tmp = explode(" ", $str);
if(!is_array($tmp) || count($tmp) != 2) return false;
$datum = explode("-", $str);
if(!is_array($datum) || count($datum) != 3) return false;
$zeit = explode(":", $str);
if(!is_array($zeit) || count($zeit) != 3) return false;
$retval = Array();
$retval['tag'] = $datum[2];
$retval['monat'] = $datum[1];
$retval['jahr'] = $datum[0];
$retval['stunden'] = $zeit[0];
$retval['minuten'] = $zeit[1];
$retval['sekunden'] = $zeit[2];
return $retval;
}
|
So und so kannst du dir dann die zwei Timestamps machen:
|
PHP Source code
|
1
2
3
4
5
6
7
8
9
10
11
12
|
$time1 = '2005-11-28 07:35:51';
$time2 = '2005-11-28 07:36:45';
$time1 = parseTimeStr($time1);
$timestamp1 = mktime($time1['stunden'],$time1['minuten'],$time1['sekunden'],$time1['monat'],$time1['tag'],$time1['jahr']);
$time2 = parseTimeStr($time2);
$timestamp2 = mktime($time2['stunden'],$time2['minuten'],$time2['sekunden'],$time2['monat'],$time2['tag'],$time2['jahr']);
echo $timestamp2 - $timestamp1 > 60 ? "länger als eine Minute<br />" : "kürzer als eine Minute";
echo $timestamp2 - $timestamp1 > 60*60*24 ? "länger als ein Tag<br />" : "kürzer als ein Tag";
|
In meinem Beispiel kommt dann kürzer als eine Minute und kürzer als ein Tag raus, da die Timestamps genau um 54 sek. unterschiedlich sind.
Ciao Ephraim
[EDIT]
Es gibt noch eine zweite Lösung für die parseTimeStr Funktion.
Die erste Basiert auf explode die zweite kann man mit Regex lösen:
|
PHP Source code
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
function parseTimeStr($str) // Format vom String: '0000-00-00 00:00:00'
{
$match = Array();
if(!preg_match("/(\d{4})-(\d{2})-(\d{2})\s+(\d{2}):(\d{2}):(\d{2})/", $str, $match)) return false;
if(!is_array($match) || count($match) != 7) return false;
// 7 deshalb weil er alle werte die im Regex
// in Klammern stehen als einen Wert vom Array bekommt und
// einmal den Kompletten ge-match-ten String als Wert [0] hat.
$retval = Array();
$retval['tag'] = $match[3];
$retval['monat'] = $datum[2];
$retval['jahr'] = $datum[1];
$retval['stunden'] = $zeit[4];
$retval['minuten'] = $zeit[5];
$retval['sekunden'] = $zeit[6];
return $retval;
}
|
[/EDIT]