This is an alternative site for discovering Elm packages. You may be looking for the official Elm package site instead.

Date

Library for working with dates. Email the mailing list if you encounter issues with internationalization or locale formatting.

Dates

type Date = Date

Representation of a date.

now : Task x Date

Get the Date at the moment when this task is run.

Conversions

fromString : String -> Result String Date

Attempt to read a date from a string.

toTime : Date -> Time

Convert a Date to a time in milliseconds.

A time is the number of milliseconds since the Unix epoch.

fromTime : Time -> Date

Convert a time in milliseconds into a Date.

A time is the number of milliseconds since the Unix epoch.

Extractions

year : Date -> Int

Extract the year of a given date. Given the date 23 June 1990 at 11:45AM this returns the integer 1990.

month : Date -> Month

Extract the month of a given date. Given the date 23 June 1990 at 11:45AM this returns the month Jun as defined below.

type Month = Jan | Feb | Mar | Apr | May | Jun | Jul | Aug | Sep | Oct | Nov | Dec

Represents the month of the year.

day : Date -> Int

Extract the day of a given date. Given the date 23 June 1990 at 11:45AM this returns the integer 23.

dayOfWeek : Date -> Day

Extract the day of the week for a given date. Given the date 23 June 1990 at 11:45AM this returns the day Sat as defined below.

type Day = Mon | Tue | Wed | Thu | Fri | Sat | Sun

Represents the days of the week.

hour : Date -> Int

Extract the hour of a given date. Given the date 23 June 1990 at 11:45AM this returns the integer 11.

minute : Date -> Int

Extract the minute of a given date. Given the date 23 June 1990 at 11:45AM this returns the integer 45.

second : Date -> Int

Extract the second of a given date. Given the date 23 June 1990 at 11:45AM this returns the integer 0.

millisecond : Date -> Int

Extract the millisecond of a given date. Given the date 23 June 1990 at 11:45:30.123AM this returns the integer 123.

module Date exposing
  ( Date, fromString, toTime, fromTime
  , year, month, Month(..)
  , day, dayOfWeek, Day(..)
  , hour, minute, second, millisecond
  , now
  )

{-| Library for working with dates. Email the mailing list if you encounter
issues with internationalization or locale formatting.

# Dates
@docs Date, now

# Conversions
@docs fromString, toTime, fromTime

# Extractions
@docs year, month, Month, day, dayOfWeek, Day, hour, minute, second, millisecond

-}

import Native.Date
import Task exposing (Task)
import Time exposing (Time)
import Result exposing (Result)



-- DATES


{-| Representation of a date.
-}
type Date = Date


{-| Get the `Date` at the moment when this task is run.
-}
now : Task x Date
now =
  Task.map fromTime Time.now



-- CONVERSIONS AND EXTRACTIONS


{-| Represents the days of the week.
-}
type Day = Mon | Tue | Wed | Thu | Fri | Sat | Sun


{-| Represents the month of the year.
-}
type Month
    = Jan | Feb | Mar | Apr
    | May | Jun | Jul | Aug
    | Sep | Oct | Nov | Dec


{-| Attempt to read a date from a string.
-}
fromString : String -> Result String Date
fromString =
  Native.Date.fromString


{-| Convert a `Date` to a time in milliseconds.

A time is the number of milliseconds since
[the Unix epoch](http://en.wikipedia.org/wiki/Unix_time).
-}
toTime : Date -> Time
toTime =
  Native.Date.toTime


{-| Convert a time in milliseconds into a `Date`.

A time is the number of milliseconds since
[the Unix epoch](http://en.wikipedia.org/wiki/Unix_time).
-}
fromTime : Time -> Date
fromTime =
  Native.Date.fromTime


{-| Extract the year of a given date. Given the date 23 June 1990 at 11:45AM
this returns the integer `1990`.
-}
year : Date -> Int
year =
  Native.Date.year


{-| Extract the month of a given date. Given the date 23 June 1990 at 11:45AM
this returns the month `Jun` as defined below.
-}
month : Date -> Month
month =
  Native.Date.month


{-| Extract the day of a given date. Given the date 23 June 1990 at 11:45AM
this returns the integer `23`.
-}
day : Date -> Int
day =
  Native.Date.day


{-| Extract the day of the week for a given date. Given the date 23 June
1990 at 11:45AM this returns the day `Sat` as defined below.
-}
dayOfWeek : Date -> Day
dayOfWeek =
  Native.Date.dayOfWeek


{-| Extract the hour of a given date. Given the date 23 June 1990 at 11:45AM
this returns the integer `11`.
-}
hour : Date -> Int
hour =
  Native.Date.hour


{-| Extract the minute of a given date. Given the date 23 June 1990 at 11:45AM
this returns the integer `45`.
-}
minute : Date -> Int
minute =
  Native.Date.minute


{-| Extract the second of a given date. Given the date 23 June 1990 at 11:45AM
this returns the integer `0`.
-}
second : Date -> Int
second =
  Native.Date.second


{-| Extract the millisecond of a given date. Given the date 23 June 1990 at 11:45:30.123AM
this returns the integer `123`.
-}
millisecond : Date -> Int
millisecond =
  Native.Date.millisecond