date_sunrise

(PHP 5, PHP 7)

date_sunrise返回给定的日期与地点的日出时间

说明

date_sunrise ( int $timestamp [, int $format = SUNFUNCS_RET_STRING [, float $latitude = ini_get("date.default_latitude") [, float $longitude = ini_get("date.default_longitude") [, float $zenith = ini_get("date.sunrise_zenith") [, float $gmt_offset = 0 ]]]]] ) : mixed

date_sunrise() 返回给定的日期(以 timestamp 指定)与地点的日出时间。

参数

timestamp

timestamp所在日期的日出时间。

format

format 常量
常量 说明 取值举例
SUNFUNCS_RET_STRING string 格式返回结果 16:46
SUNFUNCS_RET_DOUBLE float 格式返回结果 16.78243132
SUNFUNCS_RET_TIMESTAMP integer 格式(时间戳)返回结果 1095034606

latitude

默认是指北纬。因此如果要指定南纬,必须传递一个负值。 参见 date.default_latitude

longitude

默认是指东经。因此如果要指定西经,必须传递一个负值。 参见 date.default_longitude

zenith

默认: date.sunrise_zenith

gmtoffset

单位是小时。

返回值

按指定格式 format 返回的日出时间, 或者在失败时返回 FALSE

错误/异常

在每 次调用日期/时间函数时,如果时区无效则会引发 E_NOTICE 错误,如果使用系统设定值或 TZ 环境变量,则会引发 E_STRICTE_WARNING 消息。参见 date_default_timezone_set()

更新日志

版本 说明
5.1.0

现在发布 E_STRICTE_NOTICE 时区错误。

范例

Example #1 date_sunrise() 例子

<?php

/* 计算葡萄牙里斯本的日出时间
Latitude:  北纬 38.4 度
Longitude: 西经 9 度
Zenith ~= 90
offset: +1 GMT
*/

echo date("D M d Y"). ', sunrise time : ' .date_sunrise(time(), SUNFUNCS_RET_STRING38.4, -9901);

?>

以上例程的输出类似于:

Mon Dec 20 2004, sunrise time : 08:54

参见

User Contributed Notes

nomail at nospam dot com 29-Mar-2018 11:27
maybe I am wrong, but I think

SUNFUNCS_RET_TIMESTAMP     return GMT(0) time

SUNFUNCS_RET_STRING     Return local time
SUNFUNCS_RET_DOUBLE     Return local time
scottix at gmail dot com 04-Dec-2013 12:46
If you are working in multiple timezones getting the offset from a date is a little tricky because you need it in hours.

<?php

$time
= new DateTime('now', new DateTimeZone('America/Los_Angeles'));

date_sunrise(
 
$time->getTimestamp(),
 
SUNFUNCS_RET_TIMESTAMP,
 
38.4,
 -
9,
 
90,
 
$time->getOffset() / 3600
);
jonathanNO dot kuhnSPAM at gmailNOSPAM dot com 29-Mar-2010 11:14
After some searching, I finally found a website that can calculate the sun's zenith. Just look up your city's lat/long (remember, west/south are negative even if it doesn't show where you look up the lat/long) and the time of sunrise/sunset and use this site:

http://solardat.uoregon.edu/cgi-bin/SolarPositionCalculator.cgi

You have to enter in the sunrise/sunset times separately, but it works.
San Diego is:
 Lat: 32.73
 Long: -117.17
 Sunrise Z.: 90.7379
 Sunset Z.: 90.8880