Skip to content

Instantly share code, notes, and snippets.

@denisshevchenko
Last active July 4, 2018 15:28
Show Gist options
  • Save denisshevchenko/eeca378322c3f9ed966d4637e6d20f19 to your computer and use it in GitHub Desktop.
Save denisshevchenko/eeca378322c3f9ed966d4637e6d20f19 to your computer and use it in GitHub Desktop.
getDateFromUser :: IO (Either UserError Day)
getDateFromUser = do
Prelude.putStrLn "Пожалуйста, укажите дату для прогноза в формате ГГГГ-ММ-ДД:"
currentTime <- getCurrentTime
date <- Prelude.getLine
let retrievedDate = utctDay currentTime
dayFromUser = parseTimeM True defaultTimeLocale "%Y-%-m-%-d" date :: Maybe Day
case dayFromUser of
Nothing -> здесь беда, потому что пользователь ввёл какую-то гадость
Just validDay -> do
let differenceInDays = diffDays validDay retrievedDate
if differenceInDays >= 0 && differenceInDays <= 16
then return $ Right validDay
else return $ Left InvalidDate
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment