Haskell程式檢查生日並列印生日快樂資訊
在Haskell中,此程式將幫助我們檢查當前日期與指定的生日是否匹配,如果匹配則列印“生日快樂”資訊,否則列印“還沒到你的生日”。Haskell提供函式來獲取當前日期以及指定日期。此程式可以透過多種方法實現,包括使用toGregorian函式、fromGregorian函式或使用utctDay <$> getCurrentTime。
此程式只會檢查一次生日,即程式執行時。如果我們希望程式定期或在特定時間檢查生日,我們可以使用像timer或schedule這樣的庫,以特定間隔安排檢查。
方法1:使用toGregorian函式
此方法使用Data.Time庫獲取當前日期,並使用toGregorian函式提取當前日期的日和月。
然後將當前日和月與指定的生日進行比較,如果匹配,則列印“生日快樂!”,否則列印“還沒到你的生日”。
演算法
步驟1 - 匯入Data.Time模組。
步驟2 - 將指定的生日定義為日和月。
步驟3 - 程式執行將從main函式開始。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函式將生日定義為LocalTime。
步驟3 - 程式執行將從main函式開始。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()函式控制整個程式。它寫成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。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP