
Security News
CVE Volume Surges Past 48,000 in 2025 as WordPress Plugin Ecosystem Drives Growth
CVE disclosures hit a record 48,185 in 2025, driven largely by vulnerabilities in third-party WordPress plugins.
@risadams/time-since
Advanced tools
A robust, type-safe utility for calculating and formatting time differences. Supports multiple formats (relative, absolute, or individual time units) with internationalization support and accurate handling of future dates, leap years, and timezone differe
A robust, type-safe utility for calculating and formatting time differences. timeSince provides a flexible solution for determining elapsed time with support for multiple output formats, internationalization, and precise handling of edge cases like future dates and timezone differences.
npm install @risadams/time-since
yarn add @risadams/time-since
pnpm add @risadams/time-since
The library supports both ESM and CommonJS imports.
import { timeSince } from '@risadams/time-since';
const { timeSince } = require('@risadams/time-since');
The package includes TypeScript type declarations:
import { timeSince } from '@risadams/time-since';
// Types are automatically available
import { timeSince } from '@risadams/time-since';
// As of May 1, 2025
const result = timeSince('2020-01-01');
console.log(result);
/* Output:
{
date: Date("2020-01-01T00:00:00.000Z"),
asOf: Date("2025-05-01T00:00:00.000Z"),
years: 5,
months: 4,
days: 0,
hours: 0,
minutes: 0,
seconds: 0,
milliseconds: 0
}
*/
// Get total milliseconds elapsed
const ms = timeSince('2025-04-30', { format: 'milliseconds' });
console.log(ms); // Output: 86400000 (1 day in milliseconds)
// Get total days elapsed
const days = timeSince('2025-04-01', { format: 'days' });
console.log(days); // Output: 30 (30 days)
// Get total months elapsed
const months = timeSince('2024-05-01', { format: 'months' });
console.log(months); // Output: 12 (12 months)
// Get total years elapsed
const years = timeSince('2020-05-01', { format: 'years' });
console.log(years); // Output: 5 (5 years)
// Default locale (English)
const relative = timeSince('2025-04-30', { format: 'relative' });
console.log(relative); // Output: "yesterday"
// Different locales
const french = timeSince('2024-05-01', { format: 'relative', locale: 'fr' });
console.log(french); // Output: "il y a 1 an" (1 year ago)
const spanish = timeSince('2025-04-29', { format: 'relative', locale: 'es' });
console.log(spanish); // Output: "hace 2 días" (2 days ago)
const german = timeSince('2025-03-01', { format: 'relative', locale: 'de' });
console.log(german); // Output: "vor 2 Monaten" (2 months ago)
// Future date (June 1, 2025 - 1 month in the future from May 1, 2025)
const futureResult = timeSince('2025-06-01');
console.log(futureResult.months); // Output: 1 (1 month until this date)
// Relative format automatically handles future dates
const futureRelative = timeSince('2025-06-01', { format: 'relative' });
console.log(futureRelative); // Output: "in 1 month"
// ISO format
const isoDate = timeSince('2025-04-01T12:00:00Z');
// Short date format
const shortDate = timeSince('4/1/2025');
// Long date format
const longDate = timeSince('April 1, 2025');
// Unix timestamp
const timestamp = timeSince(new Date('2025-04-01').getTime());
// Date object
const dateObj = timeSince(new Date('2025-04-01'));
date (Date | string): The starting date from which to calculate elapsed timeoptions (Object, optional): Configuration options
format (string, optional): Output format
'object' (default): Returns a detailed breakdown object'milliseconds', 'seconds', 'minutes', 'hours', 'days', 'months', 'years': Returns elapsed time in the specified unit'relative': Returns a human-readable string using Intl.RelativeTimeFormatlocale (string, optional): BCP 47 language tag for relative formatting (default: 'en')The project includes a comprehensive test suite with 100% code coverage:
# Run tests
npm test
# Run tests with coverage report
npm run test:coverage
If you think this could be better, please open an issue!
Please note that all interactions in this organization fall under our Code of Conduct.
MIT © 1996+ Ris Adams
FAQs
A robust, type-safe utility for calculating and formatting time differences. Supports multiple formats (relative, absolute, or individual time units) with internationalization support and accurate handling of future dates, leap years, and timezone differe
The npm package @risadams/time-since receives a total of 2 weekly downloads. As such, @risadams/time-since popularity was classified as not popular.
We found that @risadams/time-since demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Security News
CVE disclosures hit a record 48,185 in 2025, driven largely by vulnerabilities in third-party WordPress plugins.

Security News
Socket CEO Feross Aboukhadijeh joins Insecure Agents to discuss CVE remediation and why supply chain attacks require a different security approach.

Security News
Tailwind Labs laid off 75% of its engineering team after revenue dropped 80%, as LLMs redirect traffic away from documentation where developers discover paid products.