Skip to main content
infervour.com

Back to all posts

How to Get A Date In Haskell?

Published on
5 min read

Table of Contents

Show more
How to Get A Date In Haskell? image

Getting a date in Haskell involves writing code to handle date and time-related operations. While Haskell is primarily a functional programming language, it provides libraries and functions to work with dates and times.

To get a date in Haskell, you can use the Data.Time module from the time package. This module provides types and functions for manipulating dates, times, and time durations. The getCurrentTime function from this module can be used to obtain the current system time. It returns a UTCTime object representing the current time in Coordinated Universal Time (UTC).

Here's an example of how to get the current system time in Haskell:

import Data.Time.Clock (getCurrentTime) import Data.Time.Format (formatTime, defaultTimeLocale)

main :: IO () main = do currentTime <- getCurrentTime let formattedTime = formatTime defaultTimeLocale "%Y-%m-%d %H:%M:%S" currentTime putStrLn $ "Current time: " ++ formattedTime

In this example, we import the necessary modules (Data.Time.Clock and Data.Time.Format) and define a main function. Inside the main function, we use the getCurrentTime function to retrieve the current system time and bind it to the currentTime variable. We then format the time using the formatTime function by specifying the desired time format. In this case, we use "%Y-%m-%d %H:%M:%S" to represent the date and time in "YYYY-MM-DD HH:MM:SS" format. Finally, we print the formatted time to the console using putStrLn.

By manipulating the obtained UTCTime object, you can perform various date and time calculations, such as adding or subtracting durations, comparing dates, extracting components like year or month, and more.

Remember to include the required dependencies (time package) in your Haskell project's configuration file (e.g., stack.yaml or cabal file) so that you can import and use the necessary modules.

Note: While this explanation assumes a command-line application, the concepts and code can be adapted to work in other contexts as well, such as web applications or GUI programs.

In Haskell, the Data.Time module provides various functions and types for working with dates and times. To import the necessary date-related functions, you can use the following import statement:

import Data.Time

This will import the entire Data.Time module, including all the date-related functions and types it provides.

How to get the current time in milliseconds in Haskell?

To get the current time in milliseconds in Haskell, you can make use of the getCurrentTime and formatTime functions from the Data.Time module along with the time-1.9.3 package. Here's an example:

import Data.Time import Data.Time.Clock.POSIX import Data.Time.Format import System.Locale

getCurrentTimeInMillis :: IO Integer getCurrentTimeInMillis = do currentTime <- getCurrentTime let milliseconds = round $ posixToUTCTime currentTime * 1000 return milliseconds

main :: IO () main = do milliseconds <- getCurrentTimeInMillis putStrLn $ "Current time in milliseconds: " ++ show milliseconds

Note that this code uses the POSIX time format and multiplies the result by 1000 to convert seconds to milliseconds. You will need to install the time-1.9.3 package if you haven't already by adding it to your project's dependencies in your .cabal file or by running cabal install time-1.9.3.

How to add a specific number of days to a given date in Haskell?

In Haskell, you can use the Data.Time module from the time package to work with dates and time. Here's an example of adding a specific number of days to a given date using this module:

import Data.Time

addDaysToDate :: Integer -> Day -> Day addDaysToDate n = addDays n

main :: IO () main = do let givenDate = fromGregorian 2022 10 1 -- example date daysToAdd = 7 -- number of days to add result = addDaysToDate daysToAdd givenDate putStrLn $ "Given Date: " ++ show givenDate putStrLn $ "New Date: " ++ show result

This code uses the addDays function from the Data.Time.Calendar module to add the specified number of days to the given date. Note that addDays returns a new Day value, so we define a function addDaysToDate that takes an Integer (number of days) and a Day and returns a new Day value with the added days.

In the main function, we define an example givenDate and daysToAdd variables. We then use addDaysToDate to compute the new date by adding daysToAdd to givenDate. Finally, we print the given and new dates using show and putStrLn.

When you run this code, it will output:

Given Date: 2022-10-01 New Date: 2022-10-08

This demonstrates how to add a specific number of days to a given date in Haskell using the Data.Time module.

How to check if a given year is a leap year in Haskell?

In Haskell, you can check if a given year is a leap year using the following code:

isLeapYear :: Int -> Bool isLeapYear year | year `mod` 400 == 0 = True | year `mod` 100 == 0 = False | year `mod` 4 == 0 = True | otherwise = False

The isLeapYear function takes an integer parameter year and returns a boolean value indicating whether the year is a leap year.

The function uses the following rules to determine if a year is a leap year:

  1. If the year is divisible by 400, it is a leap year.
  2. If the year is divisible by 100, it is not a leap year.
  3. If the year is divisible by 4, it is a leap year.
  4. Otherwise, it is not a leap year.

You can test this function by calling it with a year value:

main :: IO () main = do let year = 2020 putStrLn $ if isLeapYear year then "Leap year" else "Not a leap year"

In this example, the variable year is set to 2020, and the result of isLeapYear year is printed to the console.