Safe Haskell | None |
---|---|
Language | Haskell2010 |
Data.Thyme.Clock
Description
Types and functions for UTC and UT1.
If you don't care about leap seconds, keep to UTCTime
and
NominalDiffTime
for your clock calculations, and you'll be fine.
Num
, Real
, Fractional
and RealFrac
instances for DiffTime
and
NominalDiffTime
are only available by importing Data.Thyme.Time. In
their stead are instances of AdditiveGroup
,
HasBasis
and VectorSpace
, with
.Scalar
DiffTime
≡ Scalar
NominalDiffTime
≡ Rational
Using fromSeconds
and toSeconds
to convert between TimeDiff
s and
other numeric types. If you really must coerce between DiffTime
and
NominalDiffTime
,
.view
(microseconds
. from
microseconds
)
UTCTime
is an instance of AffineSpace
, with
.Diff
UTCTime
≡ NominalDiffTime
UTCTime
is not Y294K-compliant. Please file a bug report on GitHub when
this becomes a problem.
- data UniversalTime
- modJulianDate :: Iso' UniversalTime Rational
- data DiffTime
- data UTCTime
- data UTCView = UTCTime {
- utctDay :: !Day
- utctDayTime :: !DiffTime
- utcTime :: Iso' UTCTime UTCView
- data NominalDiffTime
- getCurrentTime :: IO UTCTime
- class (HasBasis t, Basis t ~ (), Scalar t ~ Rational) => TimeDiff t where
- toSeconds :: (TimeDiff t, Fractional n) => t -> n
- fromSeconds :: (Real n, TimeDiff t) => n -> t
- toSeconds' :: TimeDiff t => t -> Rational
- fromSeconds' :: TimeDiff t => Rational -> t
- _utctDay :: Lens' UTCTime Day
- _utctDayTime :: Lens' UTCTime DiffTime
Universal Time
data UniversalTime #
The principal form of universal time, namely UT1.
UniversalTime
is defined by the rotation of the Earth around its axis
relative to the Sun. Thus the length of a day by this definition varies
from one to the next, and is never exactly 86400 SI seconds unlike
TAI or
AbsoluteTime
. The difference between UT1 and UTC is
DUT1.
Instances
modJulianDate :: Iso' UniversalTime Rational #
View UniversalTime
as a fractional number of days since the
Modified Julian Date epoch.
Absolute intervals
An absolute time interval as measured by a clock.
DiffTime
forms an AdditiveGroup
―so can be added using ^+^
(or ^-^
for subtraction), and also an instance of VectorSpace
―so can be scaled
using *^
, where
typeScalar
DiffTime
=Rational
Instances
Bounded DiffTime # | |
Enum DiffTime # | |
Eq DiffTime # | |
Data DiffTime # | |
Ord DiffTime # | |
Read DiffTime # | |
Show DiffTime # | |
Ix DiffTime # | |
Generic DiffTime # | |
Arbitrary DiffTime # | |
CoArbitrary DiffTime # | |
NFData DiffTime # | |
Random DiffTime # | |
Unbox DiffTime # | |
HasBasis DiffTime # | |
VectorSpace DiffTime # | |
AdditiveGroup DiffTime # | |
TimeDiff DiffTime # | |
Vector Vector DiffTime # | |
MVector MVector DiffTime # | |
Thyme DiffTime DiffTime # | |
type Rep DiffTime # | |
data Vector DiffTime # | |
type Basis DiffTime # | |
type Scalar DiffTime # | |
data MVector s DiffTime # | |
UTC
Coördinated universal time:
the most common form of universal time for civil timekeeping. It is
synchronised with AbsoluteTime
and both tick in increments of SI
seconds, but UTC includes occasional leap-seconds so that it does not
drift too far from UniversalTime
.
UTCTime
is an instance of AffineSpace
, with
typeDiff
UTCTime
=NominalDiffTime
Use .+^
to add (or .-^
to subtract) time intervals of type
NominalDiffTime
, and .-.
to get the interval between UTCTime
s.
Performance
- Internally this is a 64-bit count of
microseconds
since the MJD epoch, so.+^
,.-^
and.-.
ought to be fairly fast. Issues
UTCTime
currently cannot represent leap seconds.
Instances
Bounded UTCTime # | |
Enum UTCTime # | |
Eq UTCTime # | |
Data UTCTime # | |
Ord UTCTime # | |
Ix UTCTime # | |
Generic UTCTime # | |
Arbitrary UTCTime # | |
CoArbitrary UTCTime # | |
NFData UTCTime # | |
Random UTCTime # | |
Unbox UTCTime # | |
AffineSpace UTCTime # | |
ParseTime UTCTime # | |
FormatTime UTCTime # | |
Vector Vector UTCTime # | |
MVector MVector UTCTime # | |
Thyme UTCTime UTCTime # | |
type Rep UTCTime # | |
data Vector UTCTime # | |
type Diff UTCTime # | |
data MVector s UTCTime # | |
Unpacked UTCTime
, partly for compatibility with time
.
Constructors
UTCTime | |
Fields
|
utcTime :: Iso' UTCTime UTCView #
View UTCTime
as an UTCView
, comprising a Day
along with
a DiffTime
offset since midnight.
This is an improper lens: utctDayTime
offsets outside the range of
[
will carry over into the day part, with the
expected behaviour.zeroV
, posixDayLength
)
data NominalDiffTime #
A time interval as measured by UTC, that does not take leap-seconds into account.
For instance, the difference between 23:59:59
and 00:00:01
on the
following day is always 2 seconds of NominalDiffTime
, regardless of
whether a leap-second took place.
NominalDiffTime
forms an AdditiveGroup
―so can be added using ^+^
(or ^-^
for subtraction), and also an instance of VectorSpace
―so can
be scaled using *^
, where
typeScalar
NominalDiffTime
=Rational
Instances
getCurrentTime :: IO UTCTime #
Get the current UTC time from the system clock.
Time interval conversion
class (HasBasis t, Basis t ~ (), Scalar t ~ Rational) => TimeDiff t where #
Time intervals, encompassing both DiffTime
and NominalDiffTime
.
Issues
- Still affected by http://hackage.haskell.org/trac/ghc/ticket/7611?
Minimal complete definition
toSeconds :: (TimeDiff t, Fractional n) => t -> n #
Convert a time interval to some Fractional
type.
fromSeconds :: (Real n, TimeDiff t) => n -> t #
toSeconds' :: TimeDiff t => t -> Rational #
Type-restricted toSeconds
to avoid constraint-defaulting warnings.
fromSeconds' :: TimeDiff t => Rational -> t #
Type-restricted fromSeconds
to avoid constraint-defaulting warnings.
Lenses
_utctDayTime :: Lens' UTCTime DiffTime #
Lens'
for the time-of-day component of an UTCTime
.