@bridgerust/bridgetime
v0.2.3
Published
BridgeTime: Rust-powered Day.js/Moment-style datetime toolkit
Maintainers
Readme
@bridgerust/bridgetime
BridgeTime is a Rust-powered datetime toolkit with a Day.js/Moment-style API for Node.js.
Install
npm install @bridgerust/bridgetimeQuickstart
import { bridgeDuration, bridgeTime, supportedLocales, supportedUnits } from "@bridgerust/bridgetime";
const now = bridgeTime.now("UTC");
console.log(now.toIso());
const custom = bridgeTime.parseFormat("22/02/2026 10:15", "DD/MM/YYYY HH:mm", "UTC");
console.log(custom.toIso());
const fromArray = bridgeTime.fromArray([2026, 1, 22, 10, 15, 30, 250], "UTC");
console.log(fromArray.toArray());
const duration = new bridgeDuration(90, "minute");
console.log(duration.humanize(true)); // in 2 hours
const ny = now.toTimezone("America/New_York");
console.log(ny.format("YYYY-MM-DD HH:mm:ss"));
console.log(now.utcOffset(), now.isUtc(), ny.isDst());
const next = now.add(1, "month").startOf("day");
console.log(next.toIso());
console.log(now.get("month")); // 0-based month (Jan=0)
console.log(now.set("day", 1).toIso()); // set weekday (Sunday=0)
console.log(now.daysInMonth());
console.log(now.quarter(), now.isoWeekday());
console.log(now.dayOfYear(), now.week(), now.isoWeek());
console.log(now.isoWeekYear(), now.daysInYear(), now.weeksInYear(), now.isoWeeksInYear());
console.log(now.isToday());
console.log(now.add(30, "minute").fromNow()); // in 30 minutes
console.log(now.calendar()); // Today at HH:mm
console.log(now.formatLocale("dddd, D MMMM YYYY HH:mm", "fr"));
console.log(now.addDuration(bridgeDuration.fromMinutes(30)).toIso());
console.log(now.isBetween(now.startOf("day"), now.endOf("day"), "day", "[]"));
console.log(bridgeTime.min(now, next).toIso(), bridgeTime.max(now, next).toIso());
console.log(now.clamp(now.subtract(1, "day"), now.add(1, "day")).toIso());
console.log(supportedUnits());
console.log(supportedLocales());
const parsed = bridgeTime.parseBatch(["2026-02-22T10:15:30Z", "2026-02-23T10:15:30Z"], "UTC");
const rendered = bridgeTime.formatBatch(parsed, "dddd, DD MMM YYYY", "UTC", "es");
console.log(rendered);API Highlights
- Core:
parse,format,add,subtract,startOf,endOf,diff - Locale/calendar:
formatLocale,calendar,supportedLocales - Duration helpers:
bridgeDuration,bridgeTime.duration(value, unit?),addDuration,subtractDuration - Batch parse/format helpers:
parseBatch,parseFormatBatch,formatBatch - Custom parse helpers:
parseFormat(input, pattern, timezone?),fromArray(components, timezone?),toArray() - Timezone helpers:
timezone,utcOffset,isUtc,isDst,toTimezone - Calendar helpers:
get,set, component getters/setters (year,setYear, etc),daysInMonth,isLeapYear,isValid - Week/day helpers:
dayOfYear,setDayOfYear,quarter,setQuarter,isoWeekday,setIsoWeekday,week,weekOfYear,setWeek,isoWeek,setIsoWeek,isoWeekYear,daysInYear,weeksInYear,isoWeeksInYear - Relative-day helpers:
isToday,isYesterday,isTomorrow - Relative-time helpers:
fromTime,toTime,fromNow,toNow - Min/max helpers:
bridgeTime.min(a, b),bridgeTime.max(a, b),clamp(start, end) - Comparison helpers:
isBefore,isAfter,isSame,isSameOrBefore,isSameOrAfter,isSameOrBeforeUnit,isSameOrAfterUnit - Unit/range helpers:
isBeforeUnit,isAfterUnit,isSameUnit,isBetween
Uppercase exports (BridgeTime, BridgeDuration) are no longer part of the public Node.js API.
Build Locally
cd bindings/node/@bridgerust/bridgetime
npm install
npm run build