auroras-live / suncalc-php
PHP的太阳和月亮计算
dev-master
2019-02-01 10:20 UTC
This package is not auto-updated.
Last update: 2024-09-17 02:33:55 UTC
README
SunCalc是一个小巧的PHP库,用于计算给定位置和时间的太阳位置、日出日落等阳光阶段、月亮位置和月相,基于Vladimir Agafonkin(http://agafonkin.com/en)(@mourner)创建的JavaScript库。
大多数计算基于关于太阳位置和行星的《天文学答案》文章中给出的公式。您可以在维基百科上的黎明文章中了解SunCalc计算的不同黎明阶段。
使用示例
// initialise library class with date and coordinates today's sunlight times for Paris $sc = new AurorasLive\SunCalc(new DateTime(), 48.85, 2.35); // format sunrise time from the DateTime object $sunTimes = $sc->getSunTimes(); $sunriseStr = $sunTimes['sunrise']->format('H:i'); // get position of the sun (azimuth and altitude) at today's sunrise $sunrisePos = $sc->getPosition($sunTimes['sunrise']); // get sunrise azimuth in degrees $sunriseAzimuth = $sunrisePos->azimuth * 180 / M_PI;
参考
阳光时间
AurorasLive\SunCalc :: getSunTimes()
返回一个包含以下索引的数组(每个都是DateTime
对象)
SunCalc::times
属性包含所有当前定义的时间。
太阳位置
AurorasLive\SunCalc :: getSunPosition(/*DateTime*/ $timeAndDate)
返回一个包含以下属性的对象
altitude
:太阳相对于地平线的仰角,以弧度为单位,例如在地平线为0
,在头顶为PI/2
(正上方)azimuth
:太阳方位角,以弧度为单位(地平线方向,从南到西测量),例如0
是南方,M_PI * 3/4
是西北方
月亮位置
AurorasLive\SunCalc :: getMoonPosition(/*DateTime*/ $timeAndDate)
返回一个包含以下属性的对象
altitude
:月亮相对于地平线的仰角,以弧度为单位azimuth
:月亮方位角,以弧度为单位distance
:到月亮的距离,以公里为单位
月亮照明
AurorasLive\SunCalc :: getMoonIllumination()
返回一个包含以下属性的数组
fraction
:月亮被照亮的分数;从0.0
(新月)到1.0
(满月)变化phase
:月亮相位;从0.0
到1.0
变化,下面将描述angle
:从圆盘的北点向东测量的被照亮边缘的中点角,以弧度为单位;月亮是盈亏,如果角度为负,如果是正的
月亮相位值应按以下方式解释
月亮升起和落下时间
AurorasLive\SunCalc :: getMoonTimes($inUTC)
返回一个包含以下索引的对象
rise
:月亮升起时间作为DateTime
set
:月亮落下时间作为DateTime
alwaysUp
:true
如果月亮从未升起/落下,并且在整个白天始终高于地平线alwaysDown
:true
如果月亮始终低于地平线
默认情况下,它将在本地用户的白天(从0到24小时)中查找月亮升起和落下。如果将$inUTC
设置为true,则将搜索指定的日期从0到24个UTC小时。
变更日志
0.0.2 — 2018年8月21日
- 将其转换为类,并添加一个composer.json文件,以便与Laravel等工具一起使用
0.0.1 — 2017年7月29日
- 在传递日期时保留原始时区
0.0.0 — 2015年12月30日
- 首次提交。