2010-11-28 17 views
2

これは今日のサンノゼの日の出時間を計算するスクリプトですが、明日のためにそれを取得したい場合、どうすればいいですか?どうやって?

<?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

24時間を追加するか、実際には次の日に再計算するという意味ですか? – Jonah

+0

@Jonah:それを再計算する。今日の日の出時間に24時間を追加することはできません。 –

+0

@エヴァン:2日間の日の出の差はごくわずかですか?しかし、とにかく、私は明日に 'time()'を変更するのが簡単だと分かります。 – Jonah

答えて

8

PHP関数time()は、「The Epoch」以降の現在の時間を秒単位で表示します。 strtotime()を使用して、相対的なコンバージョンを含むさまざまなコンバージョンを行うことができます。

あなたは今から1日の時間を取得するために strtotime()を使用することができます

strtotime("+1 day"); 

だけstrtotime("+1 day")

+0

+1:私はジョナに応答する時間を無駄にしました。 –

+0

+1、私はそこで 'time()'を見るためにコードをよく見ていませんでした。 – Jonah

3

パスdate_sunrise()とdate_sunset()パラメータ:未来の日付の

time() + (24 * 60 * 60) 

24時間(すなわち、明日)。

+0

+0これはDSTを考慮していません。 – Gordon

+0

本当です。私はstrtotime( "+ 1日")を推薦する答えに投票しました – jonesbp

1

time()機能への呼び出しに1日追加するだけです。正しく覚えていれば数秒かかります。 1日追加するには60 * 60 * 24を追加する必要があります。

1

であなたは24を追加するために、日付数学関数を使用する必要があるでしょう、あなたのコードでtime()を置き換えます時(時)。時間の代わりに()、使用は:

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

0

のLinux/GNU bashコマンドtimewarpは、タイムワープスレッド内の指定されたプログラムを実行します。このメカニズムは、最新のCPUに組み込まれた特殊なハードウェアを使用します。タイムワープスレッドは指定された時間内に分離され、実行され、結果が返されます。

ここで構文です:、timeworkの詳細については

timewarp --time 86400 "php calculatesunrise.php" 

man timewarp

これは、基本的なアルゴリズムを変更する必要がなくなり、明日あなたの計算を実行します。これを実行するにはexec()を使用します。これは、ではなく、Windowsマシン上でが動作することに注意してください。 Windowsマシン上で動作する必要がある場合は、代わりにsleep(86400)を使用してください。

関連する問題