-
Notifications
You must be signed in to change notification settings - Fork 0
/
Julian_calendar.ads
67 lines (57 loc) · 3.3 KB
/
Julian_calendar.ads
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
-- Julian_calendar.ads
-- Specifications of conversion routines between julian and gregorian calendar
-- versus Julian day. Here they are named Roman calendar.
-- The Julian calendar was initiated by Julius Caesar in 709 Ab Urbe Condita.
-- The Gregorian calendar was enforced by Gregorius XIII in 1582 Anno Domini.
-- The computation of the "delay" between a Gregorian and a Julian date
-- and the computation of Easter following Julian and Gregorian computus
-- are also specified here.
----------------------------------------------------------------------------
-- Copyright Miletus 2016
-- Permission is hereby granted, free of charge, to any person obtaining
-- a copy of this software and associated documentation files (the
-- "Software"), to deal in the Software without restriction, including
-- without limitation the rights to use, copy, modify, merge, publish,
-- distribute, sublicense, and/or sell copies of the Software, and to
-- permit persons to whom the Software is furnished to do so, subject to
-- the following conditions:
-- 1. The above copyright notice and this permission notice shall be included
-- in all copies or substantial portions of the Software.
-- 2. Changes with respect to any former version shall be documented.
--
-- The software is provided "as is", without warranty of any kind,
-- express of implied, including but not limited to the warranties of
-- merchantability, fitness for a particular purpose and noninfringement.
-- In no event shall the authors of copyright holders be liable for any
-- claim, damages or other liability, whether in an action of contract,
-- tort or otherwise, arising from, out of or in connection with the software
-- or the use or other dealings in the software.
-- Inquiries: www.calendriermilesien.org
-------------------------------------------------------------------------------
with Scaliger; use Scaliger;
-- Defines Julian_Day and General date (i.e. Day 1..31, Month 1..12, Year).
package Julian_calendar is
type Roman_date is new General_date;
type Calendar_type is (Unspecified, Julian, Gregorian);
-- the function names are similar to names of conversion functions in php
function JD_to_Roman (jd : Julian_Day;
Calendar : Calendar_type := Unspecified)
return Roman_date;
-- given an integer Julian day, compute the corresponding Roman day
-- by default: following the Julian calendar.
function Roman_to_JD (Date : Roman_date;
Calendar : Calendar_type := Unspecified)
return Julian_Day;
-- given a date in Roman form, compute the corresponding Julian day.
function Julian_to_Gregorian_Delay (Year : Historical_year_number)
return Integer;
-- Delay of the Julian calendar to the Gregorian in days,
-- i.e. days to add the Julian date in order to obtain the Gregorian one.
-- This delay is valid from 1 March of specified year,
-- until last day of February of next year, Julian calendar.
function Easter_days (Year : Natural;
Calendar : Calendar_type := Unspecified)
return Natural;
-- Give number of days to add to 21 March in order to land Easter sunday.
-- Delambre method and "Milesian" method (no dependency to Milesian calendar)
end Julian_calendar;