2010-11-28 9 views
2

Dies ist mein Skript, das Sonnenaufgang Zeit für San Jose für heute berechnet, aber wenn ich es für morgen bekommen wollte, wie kann ich es tun?Sonnenaufgang morgen in PHP. Wie?

<?php 

//San Jose, CA 
$lat = 37.339386; // North 
$long = -121.894955; // East 
$offset = -8; // difference between GMT and local time in hours 

$zenith=90+50/60; 
echo "<br><p>Sunrise: ".date_sunrise(time(), SUNFUNCS_RET_STRING, $lat, $long, $zenith, $offset); 
echo "<br>Sunset: ".date_sunset(time(), SUNFUNCS_RET_STRING, $lat, $long, $zenith, $offset); 
?> 
+0

Meinst du nur hinzufügen vierundzwanzig Stunden, oder es tatsächlich für den nächsten Tag neu berechnen? – Jonah

+0

@ Jonah: Neuberechnung. Das Hinzufügen von 24 Stunden zur Sonnenaufgangzeit für heute würde nicht funktionieren. –

+0

@Evan: Ist der Unterschied zwischen dem Sonnenaufgang von zwei Tagen nicht zu vernachlässigen? Aber wie auch immer, ich sehe, dass es einfach ist, "time()" in morgen zu ändern – Jonah

Antwort

8

Die PHP-Funktion, time() gibt Ihnen die aktuelle Zeit in Sekunden seit "The Epoch". Sie können strtotime() verwenden, um viele verschiedene Conversions durchzuführen, einschließlich der relativen Conversions.

Sie strtotime() können Sie die Zeit 1 Tag ab jetzt bekommen:

strtotime("+1 day"); 

nur time() in Ihrem Code ersetzen, mit strtotime("+1 day")

+0

+1: Ich verschwendete Zeit, um auf Jonah zu reagieren. –

+0

+1, ich habe den Code nicht genau genug angesehen, um die 'time()' darin zu sehen. – Jonah

3

Pass Funktionen date_sunrise() und date_sunset() der Parameter:

time() + (24 * 60 * 60) 

Für einen Tag 24 Stunden in der Zukunft (dh morgen).

+0

+0 Dies berücksichtigt keine Sommerzeit. – Gordon

+0

Es ist wahr. Ich habe die Antwort gewählt, die strtotime empfiehlt ("+ 1 Tag") – jonesbp

1

Fügen Sie einfach einen Tag zu Ihren Anrufen zur time() Funktion hinzu. Wenn ich mich richtig erinnere, dauert es Sekunden. Um einen Tag hinzuzufügen, müssen Sie 60 * 60 * 24 hinzufügen.

1

Sie benötigen würde die Datums mathematische Funktionen verwenden 24 hinzufügen Stunden zu Zeit(). Anstelle der Zeit(), zu verwenden:

strtotime('+1 day', time());

0

Die Linux/GNU Bash Befehl ausführt timewarp ein bestimmtes Programm in einem timewarp Gewinde. Dieser Mechanismus verwendet spezielle Hardware, die in den meisten modernen CPUs eingebaut ist. Der Timewarp-Thread wird in einer bestimmten Zeit isoliert, ausgeführt und gibt das Ergebnis jetzt zurück.

Hier ist die Syntax:

timewarp --time 86400 "php calculatesunrise.php" 

Für weitere Informationen über timework, man timewarp

Diese im Grunde Ihre Berechnung morgen führt, entfällt die Notwendigkeit, den Algorithmus zu ändern. Verwenden Sie exec(), um dies auszuführen. Beachten Sie, dies funktioniert nicht auf einem Windows-Rechner arbeiten. Wenn Sie es auf einem Windows-Rechner benötigen, verwenden Sie stattdessen sleep(86400).

Verwandte Themen