DateTime-Astro

 view release on metacpan or  search on metacpan

README.md  view on Meta::CPAN

[![Build Status](https://travis-ci.org/lestrrat-p5/DateTime-Astro.svg?branch=master)](https://travis-ci.org/lestrrat-p5/DateTime-Astro)
# NAME

DateTime::Astro - Functions For Astromical Calendars

# DESCRIPTION

DateTime::Astro implements functions used in astronomical calendars, such
as calculation of lunar longitudea and solar longitude.

This module is best used in environments where a C compiler and the MPFR arbitrary precision math library is installed. It can fallback to using Math::BigInt, but that would pretty much render it useless because of its speed and loss of accuracy that...

# DISCLAIMER

This module works, but there are several caveats you should be aware of:

## MPFR Is Required / PurePerl Version Not Functional

There /is/ a HALF BAKED Pure Perl implmentation bundled with this distribution, but at this point please consider it UNUSABLE. This sort of calculation requires the speed and efficiency of a C library anyway.

As such, you HAVE to have MPFR installed correctly in your system. Please consult your local package manager, or http://mpfr.org

Patches to make the pure perl version work better is always welcome.

## 17 solar terms are still off by ~ 5 minutes

I've tried very hard to correctly calculate the solar term dates with this
module, but I still get 17 instances in about 130 years worth of solar terms,
where the dates are off by an average of about 5 minutes -- and these usually 
fall at right about midnight, causing day-based comparisons to be off by 1.

I'm sure there's something that's causing a round off somwhere. If you're up
to it, please see xt/101\_solar\_terms.t and see if you can fix it for me!

# FUNCTIONS

## BACKEND()

Returns 'XS' or 'PP', noting the current backend.

## dt\_from\_moment($moment)

Given a moment (days since rd + fractional seconds), returns a DateTime object in UTC

## dynamical\_moment($moment)

Computes the moment value from given moemnt, taking into account the ephemeris correction.

## dynamical\_moment\_from\_dt($dt)

Computes the moment value from a DateTime object, taking into account the ephemeris correction.

## ephemeris\_correction($moment)

Computes the ephemeris correction on a given moment

## gregorian\_components\_from\_rd($rd\_days)

Computes year, month, date from RD value

## gregorian\_year\_from\_rd($rd\_days)

Computes year from RD value

## julian\_centuries($dt)

Computes the julian centuries for given DateTime object



( run in 2.200 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )