Hyperlinkv0.8.0-beta.28

Equivalence

Equivalence.Dateconsteffect/Equivalence.ts:867
(self: Date, that: Date): boolean

Equivalence instance for Date objects that compares their getTime() values using Equivalence.Number.

When to use

Use when you need an Equivalence for JavaScript date objects by their millisecond timestamp.

Details

Different Date instances that represent the same millisecond timestamp are equivalent. Because Equivalence.Number treats NaN as equal to NaN, two invalid Date values are also considered equivalent.

Example (Comparing Date values)

import { Equivalence } from "effect"

const d1 = new Date("2020-01-01T00:00:00.000Z")
const d2 = new Date("2020-01-01T00:00:00.000Z")
const d3 = new Date("2021-01-01T00:00:00.000Z")
const invalidDate1 = new Date("foo")
const invalidDate2 = new Date("bar")

console.log(Equivalence.Date(d1, d2)) // true
console.log(Equivalence.Date(d1, d3)) // false
console.log(Equivalence.Date(invalidDate1, invalidDate2)) // true
console.log(Equivalence.Date(invalidDate1, d1)) // false

Example (Comparing reference and value equality)

import { Equivalence } from "effect"

const d1 = new Date(0)
const d2 = new Date(0)

console.log(d1 === d2) // false (different references)
console.log(Equivalence.Date(d1, d2)) // true (same time value)
export const Date: Equivalence<Date> = mapInput(
  Number,
  (d: Date) => d.getTime()
)