/** * Set locality. * * @param Locality $Locality Locality * @return \Jyotish\Base\Data */ public function setLocality(Locality $Locality) { if (!is_null($Locality)) { $this->clearData(); } $this->Locality = $Locality; $this->data[self::BLOCK_USER]['longitude'] = $this->Locality->getLongitude(); $this->data[self::BLOCK_USER]['latitude'] = $this->Locality->getLatitude(); $this->data[self::BLOCK_USER]['altitude'] = $this->Locality->getAltitude(); return $this; }
/** * Get Local Sidereal Time. * * @param DateTime $DateTime Date * @param Locality $Locality Locality * @return float In hours */ public static function getLST(DateTime $DateTime, Locality $Locality) { $hour = $DateTime->format('G'); $minute = $DateTime->format('i'); $second = $DateTime->format('s'); $jc = Time::getJC($DateTime); $gst = 24110.54841 + 8640184.812866 * $jc + 0.09310400000000001 * $jc ** 2 - 6.2E-6 * $jc ** 3; $units = Math::partsToUnits($gst, 86400); $hourS0 = $units['parts'] / 3600; $hourLng = $Locality->getLongitude() / 15; $hourOffset = $DateTime->getOffset() / 3600; $hourUT = $hour + $minute / 60 + $second / 3600 - $hourOffset; $lst = $hourS0 + $hourLng + $hourUT * 1.002737909350795; $result = $lst >= 24 ? $lst -= 24 : $lst; return $result; }