Jalaali Haskell
A few Haskell functions for converting Jalaali (Jalali, Persian, Khayyami, Khorshidi, Shamsi) and Gregorian calendar systems to each other.
About
Jalali calendar is a solar calendar that was used in Persia, variants of which today are still in use in Iran as well as Afghanistan. Read more on Wikipedia or see Calendar Converter.
Calendar conversion is based on the algorithm provided by Kazimierz M. Borkowski and has a very good performance.
API
Types
type JalaaliYear = Int
type JalaaliMonth = Int
type JalaaliDay = Int
type GregorianYear = Int
type GregorianMonth = Int
type GregorianDay = Int
type JulianDayNumber = Int
type DayInMarch = Int
type LeapOffset = Int
type JalaaliDate = (JalaaliYear, JalaaliMonth, JalaaliDay)
type GregorianDate = (GregorianYear, GregorianMonth, GregorianDay)
Functions
toJalaali
Converts a Gregorian date to Jalaali.
toJalaali :: GregorianYear -> GregorianMonth -> GregorianDay -> JalaaliDate
toGregorian
Converts a Jalaali date to Gregorian.
toGregorian :: JalaaliYear -> JalaaliMonth -> JalaaliDay -> GregorianDate
isValidJalaaliDate
Checkes whether a Jalaali date is valid or not.
isValidJalaaliDate :: JalaaliYear -> JalaaliMonth -> JalaaliDay -> Bool
isJalaaliLeapYear
Checks whether a Jalaali year is leap or not.
isJalaaliLeapYear :: JalaaliYear -> Bool
jalaaliMonthLength
Returns the number of days in a Jalaali year and month.
jalaaliMonthLength :: JalaaliYear -> JalaaliMonth -> Int
jalCal
Determines if a Jalaali year is leap or common, and finds the day in March of the first day of the Jalaali year.
jalCal :: JalaaliYear -> (LeapOffset, GregorianYear, DayInMarch)
j2d
Converts a Jalaali date to Julian Day number.
j2d :: JalaaliYear -> JalaaliMonth -> JalaaliDay -> JulianDayNumber
d2j
Converts a Julian Day number to a Jalaali date.
d2j :: JulianDayNumber -> JalaaliDate
g2d
Converts a Gregorian date to Julian Day number.
g2d :: GregorianYear -> GregorianMonth -> GregorianDay -> JulianDayNumber
d2g
Converts a Julian Day number to a Gregorian date.
d2g :: JulianDayNumber -> GregorianDate
License
MIT