Safe Haskell | Safe |
---|---|

Language | Haskell2010 |

ISO 8601 Ordinal Date format

## Synopsis

- data Day
- type Year = Integer
- type DayOfYear = Int
- type WeekOfYear = Int
- isLeapYear :: Year -> Bool
- toOrdinalDate :: Day -> (Year, DayOfYear)
- fromOrdinalDate :: Year -> DayOfYear -> Day
- pattern YearDay :: Year -> DayOfYear -> Day
- fromOrdinalDateValid :: Year -> DayOfYear -> Maybe Day
- showOrdinalDate :: Day -> String
- mondayStartWeek :: Day -> (WeekOfYear, Int)
- sundayStartWeek :: Day -> (WeekOfYear, Int)
- fromMondayStartWeek :: Year -> WeekOfYear -> Int -> Day
- fromMondayStartWeekValid :: Year -> WeekOfYear -> Int -> Maybe Day
- fromSundayStartWeek :: Year -> WeekOfYear -> Int -> Day
- fromSundayStartWeekValid :: Year -> WeekOfYear -> Int -> Maybe Day

# Documentation

The Modified Julian Day is a standard count of days, with zero being the day 1858-11-17.

#### Instances

Day of year, in range 1 (January 1st) to 366. December 31st is 365 in a common year, 366 in a leap year.

type WeekOfYear = Int Source #

Week of year, by various reckonings, generally in range 0-53 depending on reckoning.

isLeapYear :: Year -> Bool Source #

Is this year a leap year according to the proleptic Gregorian calendar?

fromOrdinalDate :: Year -> DayOfYear -> Day Source #

Convert from ISO 8601 Ordinal Date format. Invalid day numbers will be clipped to the correct range (1 to 365 or 366).

pattern YearDay :: Year -> DayOfYear -> Day Source #

Bidirectional abstract constructor for ISO 8601 Ordinal Date format. Invalid day numbers will be clipped to the correct range (1 to 365 or 366).

fromOrdinalDateValid :: Year -> DayOfYear -> Maybe Day Source #

Convert from ISO 8601 Ordinal Date format.
Invalid day numbers return `Nothing`

showOrdinalDate :: Day -> String Source #

Show in ISO 8601 Ordinal Date format (yyyy-ddd)

mondayStartWeek :: Day -> (WeekOfYear, Int) Source #

Get the number of the Monday-starting week in the year and the day of the week.
The first Monday is the first day of week 1, any earlier days in the year are week 0 (as `%W`

in `formatTime`

).
Monday is 1, Sunday is 7 (as `%u`

in `formatTime`

).

sundayStartWeek :: Day -> (WeekOfYear, Int) Source #

Get the number of the Sunday-starting week in the year and the day of the week.
The first Sunday is the first day of week 1, any earlier days in the year are week 0 (as `%U`

in `formatTime`

).
Sunday is 0, Saturday is 6 (as `%w`

in `formatTime`

).

:: Year | Year. |

-> WeekOfYear | Monday-starting week number (as |

-> Int | Day of week.
Monday is 1, Sunday is 7 (as |

-> Day |

The inverse of `mondayStartWeek`

. Get a `Day`

given the year,
the number of the Monday-starting week, and the day of the week.
The first Monday is the first day of week 1, any earlier days in the year
are week 0 (as `%W`

in `formatTime`

).

fromMondayStartWeekValid Source #

:: Year | Year. |

-> WeekOfYear | Monday-starting week number (as |

-> Int | Day of week.
Monday is 1, Sunday is 7 (as |

-> Maybe Day |

:: Year | Year. |

-> WeekOfYear | Sunday-starting week number (as |

-> Int | Day of week
Sunday is 0, Saturday is 6 (as |

-> Day |

The inverse of `sundayStartWeek`

. Get a `Day`

given the year and
the number of the day of a Sunday-starting week.
The first Sunday is the first day of week 1, any earlier days in the
year are week 0 (as `%U`

in `formatTime`

).

fromSundayStartWeekValid Source #

:: Year | Year. |

-> WeekOfYear | Sunday-starting week number (as |

-> Int | Day of week.
Sunday is 0, Saturday is 6 (as |

-> Maybe Day |