Ну, на самом деле вы уже получили объект Day
, но, используя toGregorian
, вы конвертируете его в тройной (Integer, Int, Int)
(год, месяц, день согласно григорианскому календарю).Таким образом, вы можете просто отбросить вызов функции toGregorian
:
main :: IO ()
main = do
Prelude.putStrLn "Please,enter date YYYY-MM-DD"
currentTime <- getCurrentTime
date <- Prelude.getLine
let sTime = show currentTime
let retrievedDate = <b>utctDay currentTime</b>
let forecastDay = parseTimeM True defaultTimeLocale "%Y-%-m-%-d" date :: Maybe Day
let diifedDays = diffDays (fromJust forecastDay) retrievedDate
if date >= show retrievedDate && diifedDays > 0 && diifedDays <= 16
then print date
else print "Time Error!"
Если вам, однако, необходимо преобразовать тройку обратно, вы можете использовать fromGregorian :: Integer -> Int -> Int -> Day
функция.Таким образом, для тройки (Integer, Int, Int)
мы можем использовать:
\(y, m, d) -> fromGregorian y m d
Кроме того, ваш код производит довольно хаотичное впечатление с большим количеством операторов let
, show
с и т. Д. Поэтому я бы хотелочень советую вам его почистить.