prsm/packages/ms/README.md
2025-03-26 16:29:37 -04:00

87 lines
2.2 KiB
Markdown

# @prsm/ms
[![NPM version](https://img.shields.io/npm/v/@prsm/ms?color=a1b858&label=)](https://www.npmjs.com/package/@prsm/ms)
A lightweight utility for parsing and converting time strings to milliseconds and other time units.
## Installation
```bash
npm install @prsm/ms
# or
yarn add @prsm/ms
# or
pnpm add @prsm/ms
```
## Usage
### Basic Usage
```typescript
import ms from "@prsm/ms";
// Convert complex time expressions to milliseconds
ms("1day 2hrs 30min"); // 95400000
ms("15mins 12s"); // 912000
ms("1w 3d 12h"); // 907200000
// Negative values
ms("-30min"); // -1800000
// Numbers are passed through
ms(100); // 100
// Format flexibility
ms("1,000 seconds"); // 1000000
ms("2_000ms"); // 2000
```
### Options
```typescript
// Disable rounding (default: true)
ms("10.9ms"); // 11
ms("10.9ms", { round: false }); // 10.9
// Convert to different units (default: "ms")
ms("1000.9ms", { unit: "s" }); // 1
ms("1000.9ms", { round: false, unit: "s" }); // 1.0009
ms("60s", { unit: "m" }); // 1
ms("60m", { unit: "h" }); // 1
```
### Unit Conversion
```typescript
// Convert between different time units
ms("1h", { unit: "ms" }); // 3600000
ms("90min", { unit: "h" }); // 1.5
ms("1d", { unit: "h" }); // 24
ms("1w", { unit: "d" }); // 7
// Precision control
ms("90.5min", { unit: "h" }); // 2 (rounded by default)
ms("90.5min", { unit: "h", round: false }); // 1.5083333333333333
```
### Default Values
```typescript
// Provide default values for invalid inputs
ms("", 500); // 500
ms(null, "1s"); // 1000
ms("invalid", "5m"); // 300000
```
## Supported Time Units
| Unit | Aliases |
|--------------|------------------------------------------------------------------|
| Milliseconds | `ms`, `msec`, `msecs`, `millisec`, `millisecond`, `milliseconds` |
| Seconds | `s`, `sec`, `secs`, `second`, `seconds` |
| Minutes | `m`, `min`, `mins`, `minute`, `minutes` |
| Hours | `h`, `hr`, `hrs`, `hour`, `hours` |
| Days | `d`, `dy`, `day`, `days` |
| Weeks | `w`, `wk`, `wks`, `week`, `weeks` |