hledger-lib-0.14: Reusable types and utilities for the hledger accounting tool and financial apps in general.Source codeContentsIndex
Hledger.Data.Dates
Description

Date parsing and utilities for hledger.

For date and time values, we use the standard Day and UTCTime types.

A SmartDate is a date which may be partially-specified or relative. Eg 2008/12/31, but also 2008/12, 12/31, tomorrow, last week, next year. We represent these as a triple of strings like ("2008","12",""), ("","","tomorrow"), ("","last","week").

A DateSpan is the span of time between two specific calendar dates, or an open-ended span where one or both dates are unspecified. (A date span with both ends unspecified matches all dates.)

An Interval is ledger's "reporting interval" - weekly, monthly, quarterly, etc.

Synopsis
showDate :: Day -> String
getCurrentDay :: IO Day
getCurrentYear :: IO Integer
elapsedSeconds :: Fractional a => UTCTime -> UTCTime -> a
splitSpan :: Interval -> DateSpan -> [DateSpan]
splitspan :: (Day -> Day) -> (Day -> Day) -> DateSpan -> [DateSpan]
daysInSpan :: DateSpan -> Maybe Integer
spanContainsDate :: DateSpan -> Day -> Bool
parsePeriodExpr :: Day -> String -> Either ParseError (Interval, DateSpan)
dateSpanAsText :: DateSpan -> String
spanFromSmartDateString :: Day -> String -> DateSpan
spanFromSmartDate :: Day -> SmartDate -> DateSpan
showDay :: Day -> String
fixSmartDateStr :: Day -> String -> String
fixSmartDateStrEither :: Day -> String -> Either ParseError String
fixSmartDate :: Day -> SmartDate -> Day
prevday :: Day -> Day
parsedatetimeM :: String -> Maybe LocalTime
parsedateM :: String -> Maybe Day
parsedatetime :: String -> LocalTime
parsedate :: String -> Day
parsetimewith :: ParseTime t => String -> String -> t -> t
smartdate :: GenParser Char st SmartDate
smartdateonly :: GenParser Char st SmartDate
validMonth :: String -> Bool
validDay :: String -> Bool
validYear :: String -> Bool
failIfInvalidMonth :: Monad m => String -> m ()
failIfInvalidDay :: Monad m => String -> m ()
failIfInvalidYear :: Monad m => String -> m ()
yyyymmdd :: GenParser Char st SmartDate
ymd :: GenParser Char st SmartDate
ym :: GenParser Char st SmartDate
y :: GenParser Char st SmartDate
d :: GenParser Char st SmartDate
md :: GenParser Char st SmartDate
month :: GenParser Char st SmartDate
mon :: GenParser Char st SmartDate
yesterday :: GenParser Char st SmartDate
tomorrow :: GenParser Char st SmartDate
today :: GenParser Char st SmartDate
lastthisnextthing :: GenParser Char st SmartDate
periodexpr :: Day -> GenParser Char st (Interval, DateSpan)
intervalanddateperiodexpr :: Day -> GenParser Char st (Interval, DateSpan)
intervalperiodexpr :: GenParser Char st (Interval, DateSpan)
dateperiodexpr :: Day -> GenParser Char st (Interval, DateSpan)
reportinginterval :: GenParser Char st Interval
periodexprdatespan :: Day -> GenParser Char st DateSpan
doubledatespan :: Day -> GenParser Char st DateSpan
fromdatespan :: Day -> GenParser Char st DateSpan
todatespan :: Day -> GenParser Char st DateSpan
justdatespan :: Day -> GenParser Char st DateSpan
mkdatespan :: String -> String -> DateSpan
Documentation
showDate :: Day -> StringSource
getCurrentDay :: IO DaySource
Get the current local date.
getCurrentYear :: IO IntegerSource
Get the current local year.
elapsedSeconds :: Fractional a => UTCTime -> UTCTime -> aSource
splitSpan :: Interval -> DateSpan -> [DateSpan]Source
Split a DateSpan into one or more consecutive spans at the specified interval.
splitspan :: (Day -> Day) -> (Day -> Day) -> DateSpan -> [DateSpan]Source
daysInSpan :: DateSpan -> Maybe IntegerSource
Count the days in a DateSpan, or if it is open-ended return Nothing.
spanContainsDate :: DateSpan -> Day -> BoolSource
Does the span include the given date ?
parsePeriodExpr :: Day -> String -> Either ParseError (Interval, DateSpan)Source

Combine two datespans, filling any unspecified dates in the first with dates from the second.

Parse a period expression to an Interval and overall DateSpan using the provided reference date, or return a parse error.

dateSpanAsText :: DateSpan -> StringSource
Show a DateSpan as a human-readable pseudo-period-expression string.
spanFromSmartDateString :: Day -> String -> DateSpanSource
Convert a single smart date string to a date span using the provided reference date, or raise an error.
spanFromSmartDate :: Day -> SmartDate -> DateSpanSource
showDay :: Day -> StringSource
fixSmartDateStr :: Day -> String -> StringSource
Convert a smart date string to an explicit yyyy/mm/dd string using the provided reference date, or raise an error.
fixSmartDateStrEither :: Day -> String -> Either ParseError StringSource
A safe version of fixSmartDateStr.
fixSmartDate :: Day -> SmartDate -> DaySource
Convert a SmartDate to an absolute date using the provided reference date.
prevday :: Day -> DaySource
parsedatetimeM :: String -> Maybe LocalTimeSource
Parse a couple of date-time string formats to a time type.
parsedateM :: String -> Maybe DaySource
Parse a couple of date string formats to a time type.
parsedatetime :: String -> LocalTimeSource
Parse a date-time string to a time type, or raise an error.
parsedate :: String -> DaySource
Parse a date string to a time type, or raise an error.
parsetimewith :: ParseTime t => String -> String -> t -> tSource
Parse a time string to a time type using the provided pattern, or return the default.
smartdate :: GenParser Char st SmartDateSource

Parse a date in any of the formats allowed in ledger's period expressions, and maybe some others:

 2004
 2004/10
 2004/10/1
 10/1
 21
 october, oct
 yesterday, today, tomorrow
 this/next/last week/day/month/quarter/year

Returns a SmartDate, to be converted to a full date later (see fixSmartDate). Assumes any text in the parse stream has been lowercased.

smartdateonly :: GenParser Char st SmartDateSource
Like smartdate, but there must be nothing other than whitespace after the date.
validMonth :: String -> BoolSource
validDay :: String -> BoolSource
validYear :: String -> BoolSource
failIfInvalidMonth :: Monad m => String -> m ()Source
failIfInvalidDay :: Monad m => String -> m ()Source
failIfInvalidYear :: Monad m => String -> m ()Source
yyyymmdd :: GenParser Char st SmartDateSource
ymd :: GenParser Char st SmartDateSource
ym :: GenParser Char st SmartDateSource
y :: GenParser Char st SmartDateSource
d :: GenParser Char st SmartDateSource
md :: GenParser Char st SmartDateSource
month :: GenParser Char st SmartDateSource
mon :: GenParser Char st SmartDateSource
yesterday :: GenParser Char st SmartDateSource
tomorrow :: GenParser Char st SmartDateSource
today :: GenParser Char st SmartDateSource
lastthisnextthing :: GenParser Char st SmartDateSource
periodexpr :: Day -> GenParser Char st (Interval, DateSpan)Source
intervalanddateperiodexpr :: Day -> GenParser Char st (Interval, DateSpan)Source
intervalperiodexpr :: GenParser Char st (Interval, DateSpan)Source
dateperiodexpr :: Day -> GenParser Char st (Interval, DateSpan)Source
reportinginterval :: GenParser Char st IntervalSource
periodexprdatespan :: Day -> GenParser Char st DateSpanSource
doubledatespan :: Day -> GenParser Char st DateSpanSource
fromdatespan :: Day -> GenParser Char st DateSpanSource
todatespan :: Day -> GenParser Char st DateSpanSource
justdatespan :: Day -> GenParser Char st DateSpanSource
mkdatespan :: String -> String -> DateSpanSource
Produced by Haddock version 2.6.1