Datum vergleichen!

yappi

Grünschnabel
Hi,

ich habe folgenden Code:

PHP:
<?
$today = date["d.m.Y"];
$class = "DateOpen"

// Klassen sind:
/*
* 1. DateOpen = Wenn das Datum jünger oder gleich mit dem heutigen ist!
* 2. DateGone = Wenn das Datum älter ist als das heutige!
*/
echo' <font class=$class>19.09.2004</font> ';
?>

Wie kann ich jetzt das Datum, das ich von Hand eingetragen hab (19.09.2004) in einen TimeStamp umwandeln und mit dem $today vergleichen?

Dann trifft das mit den Klassen zu "älter oder jünger/gleich"...
Danke für jeden Post.

GreeTz
Mike
 
PHP:
/** converts a date string into a unixtimestamp. $format implements parameter d, m, y, Y, H, i, s from the PHP date() function
 * @param		string		datestring
* @param         string     formatstring
 * @return	string		timstamp
 */
function date2ts($datestr,$format = "d.m.Y H:i:s"){

	// Reihenfolge der Parameter ermitteln. Dazu werden erstmal alle Trenn-/Leer und sonstigen Zeichen entfernt.
	$tmp = ereg_replace('[^a-zA-Z]','',$format);
	$p_tag = strpos($tmp,'d');
	$p_monat = strpos($tmp,'m');
	$p_jahr = strpos($tmp,'Y');
	if($p_jahr === false){
		$p_jahr = strpos($tmp,'y');
	}
	$p_stunde = strpos($tmp,'H');
	$p_minute = strpos($tmp,'i');
	$p_sekunde = strpos($tmp,'s');
	
	// Formatstring umbauen für scanf. Dabei werden y und Y gleich behandelt.	
	$format = str_replace('d','%0d',$format);
	$format = str_replace('m','%0d',$format);
	$format = str_replace(strtolower('Y'),'%d',strtolower($format));
	$format = str_replace('H','%0d',$format);
	$format = str_replace('i','%0d',$format);
	$format = str_replace('s','%0d',$format);

	// Mit scanf auftrennen
	$frg = sscanf($datestr,$format);

	// timestamp generieren.
	$ts = mktime(
		($p_stunde) ? $frg[$p_stunde] : '',
		($p_minute) ? $frg[$p_minute] : '',
		($p_sekunde) ? $frg[$p_sekunde] : '',
		$frg[$p_monat],
		$frg[$p_tag],
		$frg[$p_jahr]
	);

	return $ts;
}

vieleicht hilft das ?
 
ja, ich weiß es nicht!
ich möchte nur wissen ob ich 2 datum vergleichen kann!

so wie oben im CODE!
 
Zuletzt bearbeitet:
(untested)
PHP:
<?php

  $datum = '19.09.2004';
  $arDatum = explode('.', $datum);
  $timestamp = mktime(0, 0, 0, $arDatum[1], $arDatum[0], $arDatum[2]);
  
  if ($timestamp < time()) {
    // Eingegebenes Datum liegt vor heutigem Datum
    // ...
  } else {
    // Eingegebenes Datum liegt nach heutigem Datum
    // ...
  }
  
?>

Noch zwei Anmerkungen:
PHP:
echo' <font class=$class>19.09.2004</font> ';
Die Variable wird nur im String ersetzt, wenn der String in doppelte Anführungszeichen eingefasst ist.

PHP:
$today = date["d.m.Y"];
Das sollte wohl eher
PHP:
$today = date("d.m.Y");
heissen.

snuu
 
danke!

jetzt hab ich nur noch 1e Sache und zwar...

Ich hab ja mehrere Datums. 19.09.2004, dann gibts noch 24.09.2004... usw.
diese daten stehen so im code:

PHP:
echo' <font class=$class>19.09.2004</font> 
      <font class=$class>24.09.2004</font> ';

Wie kann ich also das Datum (wie oben im code) in eine fortlaufende Variable speichern damit ich nicht 10 mal $datum, $datum1, $datum2... usw. eingeben muss.

P.S.: Es kommen auch immer wieder neue Datums hinzu!

PHP:
<?php

  $datum = '19.09.2004'; // soll variabel sein....
  $arDatum = explode('.', $datum);
  $timestamp = mktime(0, 0, 0, $arDatum[1], $arDatum[0], $arDatum[2]);
  
  if ($timestamp <= time()) {
    // Eingegebenes Datum liegt vor heutigem Datum, oder IST heute
    // ...
  } else {
    // Eingegebenes Datum liegt nach heutigem Datum
    // ...
  }
  
?>
 
Zuletzt bearbeitet:
Zurück