time-exts-2.1.0: Efficient Timestamps

Safe HaskellNone

Data.Time.Exts.Unix

Contents

Description

Unix timestamps of varying granularity.

Synopsis

Unix Class

class Unix u whereSource

The Unix timestamp type class.

Methods

unixBase :: u -> Int64Source

Get the base component of a Unix timestamp.

unixNorm :: u -> Int64Source

Get the normalized base component of a Unix timestamp.

Unix Timestamps

Create Unix Timestamps

createUnixDate :: Year -> Month -> Day -> UnixDateSource

Create a Unix date.

 >>> createUnixDate 2013 November 3
 2013-11-03

createUnixTime :: Hour -> Minute -> Second -> UnixTimeSource

Create a Unix time.

 >>> createUnixTime 4 52 7
 04:52:07

createUnixTimeMillis :: Hour -> Minute -> Second -> Millis -> UnixTimeMillisSource

Create a Unix time with millisecond granularity.

 >>> createUnixTimeMillis 15 22 47 2
 15:22:47.002

createUnixTimeMicros :: Hour -> Minute -> Second -> Micros -> UnixTimeMicrosSource

Create a Unix time with microsecond granularity.

 >>> createUnixTimeMicros 10 6 33 575630
 10:06:33.575630

createUnixTimeNanos :: Hour -> Minute -> Second -> Nanos -> UnixTimeNanosSource

Create a Unix time with nanosecond granularity.

 >>> createUnixTimeNanos 23 19 54 465837593
 23:19:54.465837593

createUnixTimePicos :: Hour -> Minute -> Second -> Picos -> UnixTimePicosSource

Create a Unix time with picosecond granularity.

 >>> createUnixTimePicos 17 25 36 759230473534
 17:25:36.759230473534

createUnixDateTime :: Year -> Month -> Day -> Hour -> Minute -> Second -> UnixDateTimeSource

Create a Unix date and time.

 >>> createUnixDateTime 2012 April 27 7 37 30
 2012-04-27 07:37:30

createUnixDateTimeMillis :: Year -> Month -> Day -> Hour -> Minute -> Second -> Millis -> UnixDateTimeMillisSource

Create a Unix date and time with millisecond granularity.

 >>> createUnixDateTimeMillis 2014 February 2 8 52 37 983
 2014-02-02 08:52:37.983

createUnixDateTimeMicros :: Year -> Month -> Day -> Hour -> Minute -> Second -> Micros -> UnixDateTimeMicrosSource

Create a Unix date and time with microsecond granularity.

 >>> createUnixDateTimeMicros 2011 January 22 17 34 13 138563
 2011-01-22 17:34:13.138563

createUnixDateTimeNanos :: Year -> Month -> Day -> Hour -> Minute -> Second -> Nanos -> UnixDateTimeNanosSource

Create a Unix date and time with nanosecond granularity.

 >>> createUnixDateTimeNanos 2012 June 28 1 30 35 688279651
 2012-06-28 01:30:35.688279651

createUnixDateTimePicos :: Year -> Month -> Day -> Hour -> Minute -> Second -> Picos -> UnixDateTimePicosSource

Create a Unix date and time with picosecond granularity.

 >>> createUnixDateTimePicos 2014 August 2 10 57 54 809479393286
 2014-08-02 10:57:54.809479393286

Get Current Unix Timestamps

getCurrentUnixDate :: IO UnixDateSource

Get the current Unix date from the system clock.

 >>> getCurrentUnixDate
 2013-11-03

getCurrentUnixTime :: IO UnixTimeSource

Get the current Unix time from the system clock.

 >>> getCurrentUnixTime
 05:45:06

getCurrentUnixTimeMillis :: IO UnixTimeMillisSource

Get the current Unix time with millisecond granularity from the system clock.

 >>> getCurrentUnixTimeMillis
 06:30:08.840

getCurrentUnixTimeMicros :: IO UnixTimeMicrosSource

Get the current Unix time with microsecond granularity from the system clock.

 >>> getCurrentUnixTimeMicros
 06:40:39.102910

getCurrentUnixTimeNanos :: IO UnixTimeNanosSource

Get the current Unix time with nanosecond granularity from the system clock.

 >>> getCurrentUnixTimeNanos
 06:40:45.903610000

Note that this functions calls gettimeofday behind the scenes. Therefore, the resultant timestamp will have nanosecond granularity, but only microsecond resolution.

getCurrentUnixTimePicos :: IO UnixTimePicosSource

Get the current Unix time with picosecond granularity from the system clock.

 >>> getCurrentUnixTimePicos
 06:47:15.379247000000

Note that this functions calls gettimeofday behind the scenes. Therefore, the resultant timestamp will have picosecond granularity, but only microsecond resolution.

getCurrentUnixDateTime :: IO UnixDateTimeSource

Get the current Unix date and time from the system clock.

 >>> getCurrentUnixDateTime
 2013-11-03 23:09:38

getCurrentUnixDateTimeMillis :: IO UnixDateTimeMillisSource

Get the current Unix date and time with millisecond granularity from the system clock.

 >>> getCurrentUnixDateTimeMillis
 2013-11-03 23:09:51.986

getCurrentUnixDateTimeMicros :: IO UnixDateTimeMicrosSource

Get the current Unix date and time with microsecond granularity from the system clock.

 >>> getCurrentUnixDateTimeMicros
 2013-11-03 23:10:06.498559

getCurrentUnixDateTimeNanos :: IO UnixDateTimeNanosSource

Get the current Unix date and time with nanosecond granularity from the system clock.

 >>> getCurrentUnixDateTimeNanos
 2013-11-03 23:10:23.697893000

Note that this functions calls gettimeofday behind the scenes. Therefore, the resultant timestamp will have nanosecond granularity, but only microsecond resolution.

getCurrentUnixDateTimePicos :: IO UnixDateTimePicosSource

Get the current Unix date and time with picosecond granularity from the system clock.

 >>> getCurrentUnixDateTimePicos
 2013-11-03 23:10:44.633032000000

Note that this functions calls gettimeofday behind the scenes. Therefore, the resultant timestamp will have nanosecond granularity, but only microsecond resolution.

Pretty Unix Timestamps

prettyUnixDate :: (Unix d, Date d) => d -> StringSource

Show a Unix date as a pretty string.

 >>> prettyUnixDate $ createUnixDate 2014 August 16
 "Saturday, August 16th, 2014"

prettyUnixTime :: (Unix t, Time t) => t -> StringSource

Show a Unix time as a pretty string.

 >>> getCurrentUnixTime >>= putStrLn . prettyUnixTime 
 9:12 AM

prettyUnixDateTime :: (Unix dt, DateTime dt) => dt -> StringSource

Show a Unix date and time as a pretty string.

 >>> getCurrentUnixDateTime >>= return . prettyUnixDateTime 
 "6:44 AM, Tuesday, December 31st, 2013"