Julian day number and Julian date calculations supporting the following calendars:
| Calendar | Epoch ¹ | Era | 
|---|---|---|
| Armenian | 0552-07-11 CE | Armenian | 
| Astronomical | 0001-01-01 CE | CE | 
| Baháʼí | 1844-03-21 CE | Baháʼí | 
| Coptic | 0284-08-29 CE | Diocletian | 
| Egyptian | 0747-02-26 BCE | Nabonassar | 
| Ethiopian | 0008-08-29 CE | Incarnation | 
| French Republican | 1792-09-22 CE | Republican | 
| Gregorian | 0001-01-01 CE | CE | 
| Hebrew | 3761-10-07 BCE | AM | 
| Islamic | 0622-07-16 CE | AH | 
| ISO | ||
| Julian | 0001-01-01 CE | CE | 
| Khwarizmian | 0632-06-21 CE | Yazdegerd | 
| Macedonian | 0312-09-01 BCE | Alexander | 
| Maya | 3114-09-06 BCE | |
| Persian | 0632-06-16 CE | Yazdegerd | 
| Śaka | 0079-03-24 CE | Śaka | 
| Syrian | 0312-10-01 BCE | Alexander | 
¹ Epoch in Julian calendar
The Julian day number interconverting algorithms use integer math to avoid rounding errors and the implementations have been round-trip tested for all valid Julian day numbers in the years -999,999 to +999,999.
Add a package dependency to https://github.com/sbooth/JulianDayNumber in Xcode.
- Clone the JulianDayNumber repository.
 swift build.
- Calculate the Julian date for the total solar eclipse on 1919-05-29.
 
let jd = AstronomicalCalendar.julianDateFrom(year: 1919, month: 5, day: 29)
// 2422107.5Note
The astronomical calendar is a hybrid calendar using the Julian calendar for dates before October 15, 1582 and the Gregorian calendar for later dates.
- Convert the Julian date 2422107.5 to a 
Dateinstance. 
let d = Date(julianDate: 2422107.5)
// Foundation.Date	1919-05-29 00:00:00 UTC- Convert the Gregorian calendar date 2013-10-31 to a date in the Julian calendar.
 
let j = GregorianCalendar.julianDayNumberFrom(year: 2013, month: 10, day: 31)
let julianYMD = JulianCalendar.dateFromJulianDayNumber(j)
// (year: 2013, month: 10, day: 18)The latest documentation is hosted by Swift Package Index.
The following table summarizes the arithmetic limits for Julian day number calculations.
| Calendar | Minimum JDN | Maximum JDN | 
|---|---|---|
| Armenian | Int.min + 341 | 
Int.max - 317 | 
| Baháʼí | Int.min + 56457 | 
2305795661307959248 | 
| Coptic | Int.min + 384 | 
(Int.max - 3) / 4 - 124 | 
| Egyptian | Int.min + 611 | 
Int.max - 47 | 
| Ethiopian | Int.min + 384 | 
(Int.max - 3) / 4 - 124 | 
| French Republican | Int.min + 56759 | 
2305795661307960548 | 
| Gregorian | Int.min + 56457 | 
2305795661307959247 | 
| Hebrew | Int.min + 106960181 | 
355839970905570 | 
| Islamic | Int.min + 325 | 
(Int.max - 15) / 30 - 7664 | 
| Julian | Int.min + 144 | 
(Int.max - 3) / 4 - 1401 | 
| Khwarizmian | Int.min + 341 | 
Int.max - 317 | 
| Macedonian | Int.min + 144 | 
(Int.max - 3) / 4 - 1401 | 
| Maya Long Count | Int.min + 584291 | 
Int.max | 
| Persian | Int.min + 336 | 
Int.max - 77 | 
| Śaka | Int.min + 56457 | 
2305795661307959298 | 
| Syrian | Int.min + 144 | 
(Int.max - 3) / 4 - 1401 | 
JulianDayNumber is released under the MIT License.