Haskell程序 检查生日并打印生日快乐信息

Haskell程序 检查生日并打印生日快乐信息

在Haskell中,这个程序将帮助我们检查当前日期和指定的生日,如果匹配,将打印 “生日快乐 “信息,否则,将打印 “还不是你的生日”。Haskell提供了获取当前日期和指定日期的函数。这个程序可以通过各种方法实现,包括使用toGregorian函数、fromGregorian函数或使用utctDay<$> getCurrentTime。

这个程序只检查一次生日,当程序运行时。如果我们想让程序定期或在特定的时间检查生日,我们可以使用像定时器或时间表这样的库,在特定的时间间隔内安排检查。

方法1:使用toGregorian函数

这个方法使用Data.Time库来获取当前日期,并使用toGregorian函数来提取当前日期的日期和月份。

然后,它将当前的日期和月份与指定的生日进行比较,如果匹配,就打印出 “生日快乐!”否则就打印出 “还不是你的生日”。

算法

  • 第1步–Data.Time模块被导入。

  • 第2步 – 指定的生日被定义为日和月。

  • 第3步 – 程序的执行将从主函数开始。main()函数拥有程序的全部控制权。它被写成main = do…

  • 第4步 – 通过使用getCurrentTime和toGregorian函数获取当前日期。

  • 第5步 – 将当前日期和月份与上面指定的生日进行比较,并显示最终输出。

示例

在下面的例子中。我们将使用toGregorian函数检查生日并打印生日快乐信息。

import Data.Time
birthday :: (Int, Int)
birthday = (12, 25)
main :: IO ()
main = do
   today <- getCurrentTime
   let (_, month, day) = toGregorian $ utctDay today
   if (month, day) == birthday
   then putStrLn "Happy Birthday!"
   else putStrLn "Not your birthday yet."

输出

Not your birthday yet.

方法2:使用fromGregorian函数

在这个方法中,getZonedTime函数被用来获取时区的当前日期和时间,zonedTimeToLocalTime函数被用来提取本地日期和时间,并存储在now_time变量中。fromGregorian函数用于从年、月、日的整数中创建一个Day值,然后LocalTime数据构造器用于通过将Day值与TimeOfDay值相结合来创建一个LocalTime值。

算法

  • 第1步–Data.Time.LocalTime和Data.Time.Calendar模块被导入。

  • 第2步 – 通过使用fromGregorian函数将生日定义为本地时间。

  • 第3步 – 程序的执行将从主函数开始。main()函数拥有对程序的全部控制权。

  • 第4步 – 获取并比较当前日期。

  • 第5步 – 比较后显示最终输出。

示例

在这个例子中,我们将使用fromGregorian函数检查生日并打印生日快乐信息

import Data.Time.LocalTime
import Data.Time.Calendar
birthday :: LocalTime
birthday = LocalTime (fromGregorian 2022 12 25) (TimeOfDay 12 0 0)
main :: IO ()
main = do
   now <- getZonedTime
   let now_time = zonedTimeToLocalTime now
   if now_time == birthday
   then putStrLn "Happy Birthday!"
   else putStrLn "Not your birthday yet."

输出

Not your birthday yet.

方法3:使用fromGregorian函数和utctDay<$> getCurrentTime

在这个方法中,使用了Data.Time模块和它的Day类型,它是一个新类型的包装,代表自震旦(1月1日,1年)以来的日子。fromGregorian函数被用来从年、月、日的整数中创建一个Day值。utctDay<$> getCurrentTime用于获取UTC的当前日期和时间,并从当前日期中提取日期。然后,它将当前日期与指定的生日进行比较,如果它们匹配,就打印出 “生日快乐!”否则就打印出 “还不是你的生日”。

算法

  • 第1步–Data.Time模块被导入。

  • 第2步 – 使用fromGregorian函数将指定的生日定义为一天。

  • 第3步 – 程序的执行将从主函数开始。main()函数拥有程序的全部控制权。它被写成main = do。

  • 第4步 – 使用utctDay<$> getCurrentTime来获取当前日期。

  • 第5步 – 在比较指定的生日和获取的当前日期后,显示最终输出结果。

示例

在这个例子中,我们将使用fromGregorian函数和utctDay<$> getCurrentTime。

import Data.Time
birthday :: Day
birthday = fromGregorian 2022 12 25
main :: IO ()
main = do
   today <- utctDay <$> getCurrentTime
   if (today == birthday)
   then putStrLn "Happy Birthday!"
   else putStrLn "Not your birthday yet."

输出

Not your birthday yet.

结论

在Haskell中,指定的生日被定义,当前日期被获取。这个指定的生日与当前的日期进行比较,如果相同,则输出为生日快乐信息,否则将显示还不是你的生日。这可以通过各种方法实现,包括使用toGregorian函数、fromGregorian函数或使用utctDay<$> getCurrentTime。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程