gpt4 book ai didi

php - 函数 date_sunrise() 返回错误的时间和可能的结果

转载 作者:可可西里 更新时间:2023-11-01 00:36:36 25 4
gpt4 key购买 nike

关于this function,有两点我不明白:

1.以 SUNFUNCS_RET_TIMESTAMP 格式使用时不考虑偏移量。例如,如果我使用 SUNFUNCS_RET_STRING 格式并使用此代码:

$lat = 46.055556;    // Latitude (Ljubljana).
$long = 14.508333; // Longitude (Ljubljana).
$offset = 2; // 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);

然后它将以某种方式显示正确的回答(我的意思是某种程度上将在第二点中解释):

Sunrise: 05:15 Sunset: 20:42

现在,如果我使用 SUNFUNCS_RET_TIMESTAMP 并使用函数 date() 将其转换为日期的字符串表示形式:

$lat = 46.055556;    // Latitude (Ljubljana).
$long = 14.508333; // Longitude (Ljubljana).
$offset = 2; // Difference between GMT and local time in hours.
$zenith = 90 + 50 / 60;

$dateSunRise = date_sunrise(time(), SUNFUNCS_RET_TIMESTAMP, $lat, $long, $zenith, $offset);
$dateSunSet = date_sunset(time(), SUNFUNCS_RET_TIMESTAMP, $lat, $long, $zenith, $offset);

echo "<br><p>Sunrise: " . date("H:i", $dateSunRise);
echo "<br><p>Sunrise: " . date("H:i", $dateSunSet);

我得到这个结果:

Sunrise: 03:15 Sunrise: 18:42

我检查了时间戳,它确实返回了错误,这就是我不明白的原因,因为我定义的偏移量与前面使用 SUNFUNCS_RET_STRING 的示例中定义的偏移量相同。

2.在我写的第一点中,它以某种方式显示了正确的回答,这里是对我的意思的解释。我们的官方气象机构 ARSO 每天在其页面上更新有关日出和日落的信息。该页面可以在 this link 上找到(对不起,因为它不是英文的)。底线是,对于我们的首都(卢 bool 雅那),它具有以下信息:

Sunrise: 5:18 Sunrise: 20:41

我得到 date_sunrise 和 date_sunset 函数的地方是这样的:

Sunrise: 05:15 Sunset: 20:42

参数与第一个点相同(纬度、经度、偏移量、天顶)。现在纬度和经度肯定是正确的(checked with GeoHack for Ljubljana)。我开始认为这种差异来自天顶参数。但是我在网上搜索了一下,它是这样说的:

The best Overall figure for zenith is 90+(50/60) degrees for true sunrise/sunset

我不知道为什么会出现这种差异,这两个函数是否有可能返回错误的结果?

最佳答案

当您使用时间戳时,它们几乎总是 UNIX 时间戳,这意味着它们以 UTC 格式给出。使用它们时,您必须在计算结束时将它们转换为您自己的时区。出于您的目的,您可能只需要 SUNFUNCS_RET_STRING。

对于第二点,天顶在计算日出和日落的确切分钟数方面起着重要作用。 90+(50/60) 只是一个大概的估计。有在线计算器可以为您提供更好的坐标数字,日出和日落时它们会有所不同。

以下代码将为您提供您在卢 bool 雅那寻找的号码:

$lat = 46.055556;    // Latitude (Ljubljana).
$long = 14.508333; // Longitude (Ljubljana).
$offset = 2; // Difference between GMT and local time in hours.

$rise_zenith = 90+(25/60);
$set_zenith = 90+(40/60);

echo "<br>Sunrise: " . date_sunrise(time(), SUNFUNCS_RET_STRING, $lat, $long, $rise_zenith, $offset);
echo "<br>Sunset: " . date_sunset(time(), SUNFUNCS_RET_STRING, $lat, $long, $set_zenith, $offset);

关于php - 函数 date_sunrise() 返回错误的时间和可能的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6152410/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com