Haskell 如何将(整数、整数、整数)转换为天。不能';t匹配预期类型‘;第’天;实际类型为‘;(整数,整数,整数)和#x2019; main::IO() main=do Prelude.putStrLn“请输入日期YYYY-MM-DD” currentTime 0&&diifedDays
实际上您已经得到了一个Haskell 如何将(整数、整数、整数)转换为天。不能';t匹配预期类型‘;第’天;实际类型为‘;(整数,整数,整数)和#x2019; main::IO() main=do Prelude.putStrLn“请输入日期YYYY-MM-DD” currentTime 0&&diifedDays,haskell,haskell-stack,Haskell,Haskell Stack,实际上您已经得到了一个Day对象,但是通过使用toGregorian,您可以将它转换为三个(整数、整数、整数)(根据公历的年、月、日)。因此,您实际上只需删除toGregorian函数调用: main :: IO () main = do Prelude.putStrLn "Please,enter date YYYY-MM-DD" currentTime <- getCurrentTime date <- Prelude.getLine let sTime = sh
Day
对象,但是通过使用toGregorian
,您可以将它转换为三个(整数、整数、整数)
(根据公历的年、月、日)。因此,您实际上只需删除toGregorian
函数调用:
main :: IO ()
main = do
Prelude.putStrLn "Please,enter date YYYY-MM-DD"
currentTime <- getCurrentTime
date <- Prelude.getLine
let sTime = show currentTime
let retrievedDate = toGregorian $ utctDay currentTime
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!"
除此之外,你的代码会给人一种相当混乱的印象,有很多
let
语句,show
s等等。所以我真的建议你把它清理干净。事实上你已经得到了一个Day
对象,但是通过使用toGregorian
,你把它转换成一个三元组(整数,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 = toGregorian $ utctDay currentTime
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!"
除此之外,你的代码给人留下了一个相当混乱的印象,有很多
let
语句,show
s等等。所以我真的建议你把它清理干净。你需要纠正错误的是简单地删除toGregorian
,它会很好地进行打字检查
不过,您可能需要处理您的逻辑。修复错误所需的只是删除
toGregorian
,它会很好地进行类型检查
不过,您可能需要处理您的逻辑。@WillemVanOnsem从数据中键入Day。我需要转换的时间(Integer,Int,Int)--->>Day@WillemVanOnsem从数据中键入天。我需要转换的时间(整数、整数、整数)--->>>天
\(y, m, d) -> fromGregorian y m d