Astro

Build StatusHex.pmHex.pmHex.pm

Astro is a library to provide basic astromonomical functions with a focus on functions that support solar, lunar and lunisolar calendars such as the Chinese, Hebrew and Persian calendars.

Usage

The two primary functions are Astro.sunrise/3 and Astro.sunset/3.

Examples

# Sunrise in Sydney on December 4th
iex> Astro.sunrise({151.20666584, -33.8559799094}, ~D[2019-12-04])
{:ok, #DateTime<2019-12-04 05:37:00.000000+11:00 AEDT Australia/Sydney>}

# Sunset in Sydney on December 4th
iex> Astro.sunset({151.20666584, -33.8559799094}, ~D[2019-12-04])
{:ok, #DateTime<2019-12-04 19:53:00.000000+11:00 AEDT Australia/Sydney>}

# Sunset in the town of Alert in Nunavut, Canada
# ...doesn&#39;t exist since there is no sunset in summer
iex> Astro.sunset({-62.3481, 82.5018}, ~D[2019-07-01])
{:error, :no_time}

# ...or sunrise in winter
iex> Astro.sunrise({-62.3481, 82.5018}, ~D[2019-12-04])
{:error, :no_time}

Specifying a location

The desired location of sunrise or sunset can be specified as either:

Status

Sunrise and sunset calculations are tested to be within 1 minute of

Solar functions

Lunar functions

References

Installation

Astro can be installed by adding astro to your list of dependencies in mix.exs:

def deps do
  [
    {:astro, "~> 0.1.0"}
  ]
end

Then get dependencies and install the data required to determine a time zone from a location which is used by the dependency tz_world.

mix deps.get
mix tz_world.update

Documentation can be found at https://hexdocs.pm/astro.