Security News
OpenJS: “XZ Utils Cyberattack Likely Not an Isolated Incident”
OpenJS is warning of social engineering takeovers targeting open source projects after receiving a credible attempt on the foundation.
Weekly downloads
Package description
The 'ms' npm package is a simple utility library for parsing and formatting various time formats. It allows you to easily convert between different time units such as milliseconds, seconds, minutes, hours, and days. It is commonly used to work with durations and timeouts in a human-readable format.
Convert from milliseconds to human-readable format
This feature allows you to convert a duration in milliseconds to a string that represents the duration in a more human-readable format, such as '1m' for one minute.
"const ms = require('ms');
console.log(ms(60000)); // '1m'"
Convert from human-readable format to milliseconds
This feature enables you to convert a human-readable time format into its equivalent number of milliseconds. For example, '2 days' would be converted to 172800000 milliseconds.
"const ms = require('ms');
console.log(ms('2 days')); // 172800000"
Round trip conversion
This demonstrates a round trip conversion where a human-readable duration is first converted to milliseconds and then back to a human-readable format.
"const ms = require('ms');
const duration = ms('1 hour');
console.log(ms(duration)); // '1h'"
Moment.js is a comprehensive date handling library that can parse, validate, manipulate, and display dates and times. It offers more extensive features than 'ms', including localization, date arithmetic, and formatting, but it is also larger in size.
Day.js is a minimalist library that parses, validates, manipulates, and displays dates and times. It is often considered a lightweight alternative to Moment.js with a similar API, and like 'ms', it is focused on simplicity and small footprint.
Date-fns is a modular date utility library that provides the most comprehensive, yet simple and consistent toolset for manipulating JavaScript dates. It is function-based and allows for direct manipulation of date objects, offering more functionality than 'ms' but with a focus on being lightweight.
Readme
Use this package to easily convert various time formats to milliseconds.
ms('2 days') // 172800000
ms('1d') // 86400000
ms('10h') // 36000000
ms('2.5 hrs') // 9000000
ms('2h') // 7200000
ms('1m') // 60000
ms('5s') // 5000
ms('1y') // 31557600000
ms('100') // 100
ms('-3 days') // -259200000
ms('-1h') // -3600000
ms('-200') // -200
ms(60000) // "1m"
ms(2 * 60000) // "2m"
ms(-3 * 60000) // "-3m"
ms(ms('10 hours')) // "10h"
ms(60000, { long: true }) // "1 minute"
ms(2 * 60000, { long: true }) // "2 minutes"
ms(-3 * 60000, { long: true }) // "-3 minutes"
ms(ms('10 hours'), { long: true }) // "10 hours"
ms
, a string with a unit is returned100
for '100'
)As of v3.0, this package includes TypeScript definitions.
For added safety, we're using Template Literal Types (added in TypeScript 4.1). This ensures that you don't accidentally pass ms
values that it can't process.
This won't require you to do anything special in most situations, but you can also import the StringValue
type from ms
if you need to use it.
import ms, { StringValue } from 'ms';
// Using the exported type.
function example(value: StringValue) {
ms(value);
}
// This function will only accept a string compatible with `ms`.
example('1 h');
In this example, we use a Type Assertion to coerce a string
.
import ms, { StringValue } from 'ms';
// Type assertion with the exported type.
function example(value: string) {
try {
// A string could be "wider" than the values accepted by `ms`, so we assert
// that our `value` is a `StringValue`.
//
// It's important to note that this can be dangerous (see below).
ms(value as StringValue);
} catch (error: Error) {
// Handle any errors from invalid vaues.
console.error(error);
}
}
// This function will accept any string, which may result in a bug.
example('any value');
You may also create a custom Template Literal Type.
import ms from 'ms';
type OnlyDaysAndWeeks = `${number} ${'days' | 'weeks'}`;
// Using a custom Template Literal Type.
function example(value: OnlyDaysAndWeeks) {
// The type of `value` is narrower than the values `ms` accepts, which is
// safe to use without coercion.
ms(value);
}
// This function will accept "# days" or "# weeks" only.
example('5.2 days');
ms
as a macro at build-time.npm link
npm link ms
. Instead of the default one from npm, Node.js will now use your clone of ms!As always, you can run the tests using: npm test
FAQs
Tiny millisecond conversion utility
The npm package ms receives a total of 182,410,926 weekly downloads. As such, ms popularity was classified as popular.
We found that ms demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 55 open source maintainers 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
OpenJS is warning of social engineering takeovers targeting open source projects after receiving a credible attempt on the foundation.
Company News
Come meet the Socket team at BSidesSF and RSA! We're sponsoring several fun networking events and we would love to see you there.
Security News
OSI is starting a conversation aimed at removing the excuse of the SaaS loophole for companies navigating licensing and the complexities of doing business with open source.