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.01.0变化,下面将描述
  • angle:从圆盘的北点向东测量的被照亮边缘的中点角,以弧度为单位;月亮是盈亏,如果角度为负,如果是正的

月亮相位值应按以下方式解释

月亮升起和落下时间

AurorasLive\SunCalc :: getMoonTimes($inUTC)

返回一个包含以下索引的对象

  • rise:月亮升起时间作为DateTime
  • set:月亮落下时间作为DateTime
  • alwaysUptrue如果月亮从未升起/落下,并且在整个白天始终高于地平线
  • alwaysDowntrue如果月亮始终低于地平线

默认情况下,它将在本地用户的白天(从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日

  • 首次提交。