mirror of
https://github.com/simonmichael/hledger.git
synced 2024-11-12 19:08:34 +03:00
Added variants to parse dates into maybe values
This commit is contained in:
parent
1d729b0cf3
commit
ec10ab8a16
@ -188,19 +188,32 @@ startofyear day = fromGregorian y 1 1 where (y,_,_) = toGregorian day
|
|||||||
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
||||||
-- parsing
|
-- parsing
|
||||||
|
|
||||||
|
firstJust ms = case dropWhile (==Nothing) ms of
|
||||||
|
[] -> Nothing
|
||||||
|
(md:_) -> md
|
||||||
|
|
||||||
|
parsedatetimeM :: String -> Maybe UTCTime
|
||||||
|
parsedatetimeM s = firstJust [
|
||||||
|
parseTime defaultTimeLocale "%Y/%m/%d %H:%M:%S" s,
|
||||||
|
parseTime defaultTimeLocale "%Y-%m-%d %H:%M:%S" s
|
||||||
|
]
|
||||||
|
|
||||||
-- | Parse a date-time string to a time type, or raise an error.
|
-- | Parse a date-time string to a time type, or raise an error.
|
||||||
parsedatetime :: String -> UTCTime
|
parsedatetime :: String -> UTCTime
|
||||||
parsedatetime s =
|
parsedatetime s = fromMaybe (error $ "could not parse timestamp \"" ++ s ++ "\"")
|
||||||
parsetimewith "%Y/%m/%d %H:%M:%S" s $
|
(parsedatetimeM s)
|
||||||
parsetimewith "%Y-%m-%d %H:%M:%S" s $
|
|
||||||
error $ printf "could not parse timestamp \"%s\"" s
|
-- | Parse a date string to a time type, or raise an error.
|
||||||
|
parsedateM :: String -> Maybe Day
|
||||||
|
parsedateM s = firstJust [
|
||||||
|
parseTime defaultTimeLocale "%Y/%m/%d" s,
|
||||||
|
parseTime defaultTimeLocale "%Y-%m-%d" s
|
||||||
|
]
|
||||||
|
|
||||||
-- | Parse a date string to a time type, or raise an error.
|
-- | Parse a date string to a time type, or raise an error.
|
||||||
parsedate :: String -> Day
|
parsedate :: String -> Day
|
||||||
parsedate s =
|
parsedate s = fromMaybe (error $ "could not parse date \"" ++ s ++ "\"")
|
||||||
parsetimewith "%Y/%m/%d" s $
|
(parsedateM s)
|
||||||
parsetimewith "%Y-%m-%d" s $
|
|
||||||
error $ printf "could not parse date \"%s\"" s
|
|
||||||
|
|
||||||
-- | Parse a time string to a time type using the provided pattern, or
|
-- | Parse a time string to a time type using the provided pattern, or
|
||||||
-- return the default.
|
-- return the default.
|
||||||
|
Loading…
Reference in New Issue
Block a user