@solid-primitives/date

Collection of reactive primitives and utility functions, providing easier ways to deal with dates in SolidJS.
Installation
npm install @solid-primitives/date
# or
yarn add @solid-primitives/date
Reactive Primitives:
createDate
Creates a reactive Date
signal.
const [date, setDate] = createDate(1641408329089);
date();
setDate("2020 1 11");
const [timestamp, setTimestamp] = createSignal(1641408329089);
const [date, setDate] = createDate(timestamp);
setTimestamp(1341708325070);
createDateNow
Creates an autoupdating and reactive new Date()
.
import { createDateNow } from "@solid-primitives/date";
const [now] = createDateNow(1000);
const [timeout, setTimeout] = createSignal(500);
const [now] = createDateNow(timeout);
const [now, update] = createDateNow(() => false);
update();
createTimeDifference
Provides a reactive time difference (in ms) signal.
const [target, setTarget] = createSignal(1641408329089);
const [diff, { from, to }] = createTimeDifference("2020 1 11", target);
diff();
from();
to();
createTimeDifferenceFromNow
Provides a autoupdating, reactive time difference (in ms) from now as a signal.
const [target, setTarget] = createSignal(1641408329089);
const [diff, { target, now, update }] = createTimeDifferenceFromNow(target);
diff();
target();
now();
update();
createTimeDifferenceFromNow(target, diff => (diff > 100000 ? 30000 : 1000));
createTimeAgo
Provides a reactive, formatted date difference in relation to now.
import { createTimeAgo, createDate } from "@solid-primitives/date";
const [myDate, setMyDate] = createDate("Jun 28, 2021");
const [timeago, { target, now, update, difference }] = createTimeAgo(myDate);
timeago();
difference();
target();
now();
update();
import { formatRelative } from "date-fns";
const [timeago] = createTimeAgo(1577836800000, {
min: 10000,
interval: 30000,
relativeFormatter: (target, now) => formatRelative(target, now),
});
createCountdown
Provides a reactive broken down time remaining Store.
const [to, setTo] = createSignal(1641408329089);
const countdown = createCountdown("2020 1 11", to);
countdown.minutes;
countdown.hours;
countdown.seconds;
createCountdownFromNow
Provides a reactive, autoupdating (from now), broken down "time remaining" as a Store.
const [to, setTo] = createSignal(1641408329089);
const [countdown, { now, target, update }] = createCountdownFromNow(to);
countdown.minutes;
countdown.hours;
countdown.seconds;
target();
now();
update();
createCountdownFromNow(to, diff => (diff > 100000 ? 30000 : 1000));
Utility Functions
getDate
const getDate = (init: DateInit): Date
getTime
const getTime = (init: DateInit): number
getDateDifference
Get the time difference between two dates [ms]
const getDateDifference = (from: Date, to: Date): number
getCountdown
Provides broken down time remaining from a time difference.
const getCountdown = (difference: number): Countdown
formatDate
Apply basic formatting to a Date
instance.
const formatDate = (date: Date): string
const date = new Date("2020 1 11")
formatDate(date)
formatDateRelative
Applies relative time formatting based on a time difference from now.
function formatDateRelative(difference: number, messages?: Partial<RelativeFormatMessages>): string;
Demo
https://codesandbox.io/s/solid-date-hjxui?file=/index.tsx
Changelog
See CHANGELOG.md
Acknowledgement