Skip to content

justinmimbs/elm-date-extra

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

64 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

elm-date-extra

Extra functions for working with the Date type from the Elm 0.18 core library.

Upgrading to Elm 0.19?

The Date module from Elm 0.18 core was replaced by the library elm/time, where the Date type is now replaced by Zone and Posix types. A subset of this package has been ported to work with Zone and Posix:

Most of the remaining features of this package can be found in these Elm 0.19 packages that work with Posix:

And if you only need to work with dates, without clock time or time zones, then this Date type is available for Elm 0.19:

Installation

elm-package install justinmimbs/elm-date-extra

Changelog

See the changelog before upgrading.

Examples

Only examples of common uses are given below; see the docs for the full API.

Create

Create dates from parts.

import Date exposing (Month(..))
import Date.Extra as Date

Date.fromParts 1999 Dec 31 23 59 0 0
-- <31 December 1999, 23:59, local time>

Create dates from strings in ISO 8601 format.

Date.fromIsoString "2000-01-01T00:00:00.000"
-- Ok <1 January 2000, local time>

Date.fromIsoString "2009-W01-1T00Z"
-- Ok <29 December 2008, UTC>

Date.fromIsoString "2016-218T20:00:00.000-03:00"
-- Ok <5 August 2016, 23:00, UTC>

Create a date from a specified day, time of day, and time offset.

Date.fromSpec
  (calendarDate 2016 Aug 5)
  (time 20 0 0 0)
  (offset -180)
-- <5 August 2016, 23:00, UTC>

Format

Convert dates to formatted strings, using templates based on Date Format Patterns in Unicode Technical Standard #35.

date = Date.fromParts 2007 Mar 15 13 45 56 67

Date.toFormattedString "EEEE, MMMM d, y 'at' h:mm a" date
-- "Thursday, March 15, 2007 at 1:45 PM"

Date.toUtcIsoString date
-- "2007-03-15T17:45:56.067Z"
-- (example has a local offset of UTC-04:00)

Operate

Operate on the numeric properties of dates.

import Date exposing (Month(..))
import Date.Extra as Date exposing (Interval(..))

date = Date.fromParts 1999 Dec 31 23 59 59 999

Date.add Week -2 date
-- <17 December 1999, 23:59:59.999>

Date.diff Day date (Date.add Week 2 date)
-- 14

Date.floor Hour date
-- <31 December 1999, 23:00>

Date.ceiling Monday date
-- <3 January 2000, 00:00>

-- List every Monday in the month of `date`:
Date.range Monday 1
  (Date.floor Month date)   -- <1 December 1999>
  (Date.ceiling Month date) -- <1 January 2000>
-- [ <6 December 1999>
-- , <13 December 1999>
-- , <20 December 1999>
-- , <27 December 1999>
-- ]