Skip to content

Relative Strings

ts-datetime supports parsing relative date-time strings, allowing you to create dates using natural language expressions that describe dates relative to the current time.

Basic Usage

ts
import { Datetime } from 'ts-datetime'

// Parse relative strings
const tomorrow = Datetime.fromString('tomorrow')
const lastWeek = Datetime.fromString('last week')
const nextMonth = Datetime.fromString('next month')

Supported Formats

ts-datetime supports several types of relative expressions:

Simple Relative Keywords

ts
Datetime.fromString('now')
Datetime.fromString('today')
Datetime.fromString('tomorrow')
Datetime.fromString('yesterday')

Unit-based Expressions

ts
// Addition with + prefix
Datetime.fromString('+2 days')
Datetime.fromString('+1 week')
Datetime.fromString('+3 months')
Datetime.fromString('+1 year')

// Subtraction with - prefix
Datetime.fromString('-3 hours')
Datetime.fromString('-2 weeks')

Directional Expressions

ts
Datetime.fromString('next day')
Datetime.fromString('next week')
Datetime.fromString('next month')
Datetime.fromString('next year')

Datetime.fromString('last minute')
Datetime.fromString('last hour')
Datetime.fromString('last day')

Combined Expressions

ts
Datetime.fromString('next week +2 days')
Datetime.fromString('tomorrow at noon')
Datetime.fromString('yesterday -3 hours')

Strict Parsing

By default, relative string parsing is forgiving. If you want to ensure that strings are valid, use the strict option:

ts
// Will throw if the string format is invalid
const date = Datetime.fromString('nexr week', { strict: true })

Localization

Relative string parsing supports different locales through the parseLocale option:

ts
// Parse French relative expressions
const frenchDate = Datetime.fromString('demain', { parseLocale: 'fr' })

Caveats

  • Relative string parsing is approximate and may not account for all calendar edge cases
  • For exact date calculations, use the explicit date manipulation methods instead
  • The current implementation focuses on English language expressions by default

Released under the MIT License.