@vielzeug/timit
v3.0.4
Published
--- description: Temporal-powered parsing, timezone conversion, arithmetic (DST-safe), and Intl formatting for modern TypeScript. package: timit category: date-time keywords: [temporal, date-time, timezone, formatting, arithmetic, dst, intl, calendar] rel
Downloads
488
Readme
description: Temporal-powered parsing, timezone conversion, arithmetic (DST-safe), and Intl formatting for modern TypeScript. package: timit category: date-time keywords: [temporal, date-time, timezone, formatting, arithmetic, dst, intl, calendar] related: [toolkit] exports: [parse, convert, add, subtract, diff, format, isBefore, isAfter, isWithin, now]
@vielzeug/timit
Temporal-powered parsing, timezone conversion, arithmetic (DST-safe), and Intl formatting for modern TypeScript.
Package: @vielzeug/timit · Category: Date-time
Key exports: parse, convert, add, subtract, diff, format, isBefore, isAfter, isWithin, now
When to use: Temporal-powered parsing, timezone conversion, arithmetic (DST-safe), and Intl formatting for modern TypeScript.
Related: @vielzeug/toolkit
@vielzeug/timit is part of Vielzeug and ships as a zero-dependency TypeScript package with ESM+CJS output.
Installation
pnpm add @vielzeug/timit
npm install @vielzeug/timit
yarn add @vielzeug/timitQuick Start
import { Temporal } from '@js-temporal/polyfill';
import { formatDuration, formatHuman, formatInstant, formatZoned, parseLocal, shift, toInstant, toZoned } from '@vielzeug/timit';
const localMeeting = parseLocal('2026-03-21T10:30:00');
const meetingInstant = toInstant(localMeeting, { tz: 'America/New_York' });
const meetingNY = toZoned(meetingInstant, { tz: 'America/New_York' });
const reminder = shift(meetingNY, { minutes: -15 });
console.log(formatHuman(reminder, { pattern: 'short', locale: 'en-US', tz: 'America/New_York' }));
console.log(formatInstant(reminder));
console.log(formatZoned(reminder));
console.log(formatDuration({ hours: 1, minutes: 30 }, { locale: 'en-US', style: 'short' }));Since many function names (now, shift, clamp, difference, …) are common in application code, use a namespace import to avoid collisions while still getting full tree-shaking:
import * as timit from '@vielzeug/timit';
timit.now('UTC');
timit.difference(start, end, { largestUnit: 'day' });
timit.formatHuman(meeting, { pattern: 'short', locale: 'en-US' });Documentation
License
MIT © Helmuth Saatkamp — part of the Vielzeug monorepo.
