Wie vergleicht man Zeiten?

Ich möchte Zeiten Vergleichen. Wie geht das am einfachsten?

Ich möchte wissen ob Sunset (oder Sunrise) vor oder nach einem festen Zeitpunkt ist. Also ungefähr so ‚IF SUNSET >> „20:00“ Then…‘ Da Zeiten i.d.R. String Variablen sind muss man wahrscheinlich wandeln. ich habe schon etwas probiert aber sicher hat einer von euch was Einfaches in Verwendung.

Hi,
sicher nicht die schickste Loesung, aber so mach ich das- ich hoffe, mit etwas Anpassung auf deine Bedürnisse hilft dir das weiter!

LG

$today = getdate();
$month = $today[‚month‘];
$mday = $today[‚mday‘];
$year = $today[‚year‘];
$hours = $today[‚hours‘];
$minutes = $today[‚minutes‘];
$heute= sprintf ("$mday. $month $year");
$now = sprintf ("$mday. $month $year %02d:%02d", $hours, $minutes);

setvaluestring(„Datum“, $heute);

//sonnenaufgang
$timestampm = strtotime(date("Y-m-d ").date_sunrise(time(), SUNFUNCS_RET_STRING, 53.233, 8.8, 90, 1))+0;
$aufgang=date("H:i
" ,$timestampm);
setvaluestring(„sonnenaufgang“, $aufgang);

//Sonnenuntergang
$timestampa = strtotime(date("Y-m-d ").date_sunset(time(), SUNFUNCS_RET_STRING, 53.233, 8.8, 90, 1))+0;
$untergang=date("H:i
" ,$timestampa);
setvaluestring(„sonnenuntergang“, $untergang);

//setzt aktuelle Uhrzeit
SetValueString(„currentTime“, date("H:i
"));

//variable tag ist false wenn dunkel und true wenn hell
if ((date(„H:i“,$timestampa)>date („H:i“))
and (date(„H:i“,$timestampm)<date („H:i“)))
setvalueboolean(„tag“, true);
else setvalueboolean(„tag“, false);

Hallo Heiner,

ich verwende im calendar Modul von WIIPS eine ganze Menge von „Zeitvergleichen“ - da wirst Du mit Sicherheit fuendig. Schau Dir einfach mal die Datei web/modules/calendar/calendarium.ips.php an.

Am einfachsten ist es, den numerischen Timestamp (z.B. von time()) zu vergleichen. Mit Strings geht das nur, wenn man diese nach einem festen Schema zusammenbaut z.B. im Format „yyyymmddhhiiss“

Tommi

Timestamps finde ich auch am sinnvollsten zu vergleichen. Zum Sonnenaufgang etc.
mal einige hoffentlich nützliche Befehle:


// Koordinaten, z.B. Friedrichshafen
$lat = 47.60;    // North
$long = 9.50;    // East

// difference between GMT and local time in hours:
if (date('I') == 0 ) {
  // echo 'Es ist Winterzeit';
  $offset = 1;
}else{
  // echo 'Es ist Sommerzeit';
  $offset = 2;
}

// Sonnenaufgang als Timestamp:
$zeit1 = date_sunrise(time(), SUNFUNCS_RET_TIMESTAMP, $lat, $long, 90+5/6, $offset);
// oder wer will auch Beginn der bürgerlichen Dämmerung :
$zeit1 = date_sunrise(time(), SUNFUNCS_RET_TIMESTAMP,$lat, $long, 96, $offset);
// Oder wer sich eher interessiert, wann die Lampions beim Grillen angehen sollen 
// (z.B. 15 Minuten vor Ende der Dämmerung, also $offset - 0.25)
$zeit1 = date_sunset(time(), SUNFUNCS_RET_TIMESTAMP, $lat, $long, 96 , $offset-0.25);

// Der UNIX-Timestamp ($zeit) braucht nur noch mit dem aktuellen Zeitstamp vergleichen zu werden:

if ( time() > $zeit ) { ...was auch immer...;  }

// einen Timestamp zu einer vorgegeben Zeit "baut" man sich mit dem Befehl:
int mktime ([int $Stunde [, int $Minute [, int $Sekunde [, int $Monat [, int $Tag [, int $Jahr [, int $is_dst ]]]]]]] )
siehe: http://de2.php.net/manual/de/function.mktime.php

Ich habe ein Script laufen, dass sich selbst 4 mal am Tag
aufruft (Morgendämmerung, Sonnaufgang, Sonnenuntergang, Abenddämmerung), indem es
den ScriptTimer entsprechend setzt und dann eine IPS-Variable „Sonnenstand“ einstellt.
Hiervon abhängig schalten einige Lampen unterschiedlich Hell (Tagsüber voll, nachts gedimmt)

Gruß Rolf

Danke, danke
das meiste hatte ich mir schon so aus anderen Scripts rausgesucht. Mir ging es mehr um den Vergleich von Integer Zeiten und festen Werten (Strings) z.B. „20:15“
Das Umwandeln des Strings


$uhrzeit="20:15"
$h=substr($uhrzeit,0,2);
$m=substr($uhrzeit,3,2);
$zeit=$h*60+$m; //20:15 Uhr als Integer

ist mir zu lang, das muss doch auch einfacher gehen. ‚int ($uhrzeit)‘ nimmt ja nur die linke Zahl.


$uhrzeit="20:15";
 $daten = explode(":", $uhrzeit); // trennen und in array
 $zeit=$daten[0]*60+$daten[1]; //20:15 Uhr als Integer

Wobei der Vergleich von Zeiten über ein Unix Timestamp via mktime() glaube ich die professionellste Art ist. Aber das war weiter oben ja schon aufgeführt.:wink: