Skip to content

chain ​

Overview ​

The chain() function provides a fluent API for manipulating dates, encapsulating core functionalities of the date-manip library. It supports chaining operations and intuitive date manipulation.

Quick Start ​

typescript
import { chain } from 'date-manip';

// Create a DateChain instance
const now = chain(new Date());
const tomorrow = now.addDays(1);
console.log(tomorrow.format('YYYY-MM-DD')); // Output: the next day's date

Core Features ​

1. Chaining Operations ​

typescript
chain(new Date())
  .addMonths(2)
  .set('date', 15)
  .format('YYYY-MM-DD HH:mm:ss');

2. Time Unit Manipulation ​

Supports adding/subtracting years, months, days, hours, minutes, seconds, and milliseconds:

typescript
chain('2023-01-01')
  .addYears(1)       // 2024-01-01
  .addMonths(3)      // 2024-04-01
  .addDays(5)        // 2024-04-06
  .addHours(8);      // Add 8 hours to the time

3. Date Comparison ​

typescript
const date1 = chain('2023-01-01');
const date2 = chain('2023-01-02');

date1.isBefore(date2); // true
date1.isSameOrAfter(date2); // false

API Reference ​

Class Methods ​

chain(input: ChainInput | IDateChain, format?: string): IDateChain ​

Creates a new DateChain instance.

Parameters:

  • input: Date source (Date, string, number, or another DateChain instance)
  • format (optional): Input string format (e.g., 'YYYY-MM-DD')

Properties and Methods List ​

Time Unit Manipulation ​

Method NameDescription
add(unit: Unit, val)Add any time unit (e.g., 'year', 'month').
addDays(val: number)Add days.
addHours(val: number)Add hours.
addMilliseconds(val: number)Add milliseconds.
addMinutes(val: number)Add minutes.
addMonths(val: number)Add months.
addYears(val: number)Add years.
subtract(unit: Unit, val)Subtract any time unit.
subDays(val: number)Subtract days.
subHours(val: number)Subtract hours.
subMilliseconds(val: number)Subtract milliseconds.
subMinutes(val: number)Subtract minutes.
subMonths(val: number)Subtract months.
subYears(val: number)Subtract years.

Date Accessors & Setters ​

Method NameDescription
year([val: number])Get/set the year.
month([val: number])Get/set the month (0-11).
date([val: number])Get/set the day of the month.
hour([val: number])Get/set the hour.
minute([val: number])Get/set the minute.
second([val: number])Get/set the second.
millisecond([val: number])Get/set the millisecond.
time()Get the timestamp in milliseconds.

Date Comparison ​

Method NameDescription
isAfter(date: DateInput)Check if the date is after another date.
isBefore(date: DateInput)Check if the date is before another date.
isSame(date: DateInput)Check if the date is equal to another date.
isSameOrAfter(date: DateInput)Check if the date is equal to or after another date.
isSameOrBefore(date: DateInput)Check if the date is equal to or before another date.
isBetween(start: DateInput, end: DateInput)Check if the date is between two dates.
isValid()Check if the date is valid (not Invalid Date).

Formatting & Conversion ​

Method NameDescription
format(pattern: string)Format the date as a string (e.g., 'YYYY-MM-DD HH:mm:ss').
toISOString()Convert to an ISO 8601 format string.
toDate()Convert to a native Date object.
clone()Create a copy of the current date.

Date Range Operations ​

Method NameDescription
startOf(unit: Unit)Set the date to the start of a specified time unit (e.g., startOf('day')).
endOf(unit: Unit)Set the date to the end of a specified time unit (e.g., endOf('month')).
diff(date: DateInput, unit?: Unit)Calculate the difference between dates (returns a number, specify unit).
diffInDays()Calculate the difference in days between dates.
diffInMonths()Calculate the difference in months between dates.
diffInYears()Calculate the difference in years between dates.

Utility Methods ​

Method NameDescription
dayOfYear()Get the day of the year (1-366).
daysInMonth()Get the number of days in the current month (e.g., 28-31).
isLeapYear()Check if the year is a leap year.
toArray()Convert to an array [year, month, date, hours, minutes, seconds, milliseconds].

Usage Examples ​

Example 1: Date Manipulation & Formatting ​

typescript
const date = chain('2023-01-01');
const result = date
  .addMonths(2)       // 2023-03-01
  .addDays(5)         // 2023-03-06
  .format('YYYY-MM-DD');
console.log(result); // Output: 2023-03-06

Example 2: Date Comparison ​

typescript
const dateA = chain('2023-01-01');
const dateB = chain('2023-01-02');

dateA.isBefore(dateB); // true
dateB.isAfter(dateA);  // true

Example 3: Accessing Date Values ​

typescript
const now = chain();
console.log(now.year());     // Current year
console.log(now.hour());     // Current hour

Example 4: Date Difference Calculation ​

typescript
const start = chain('2023-01-01');
const end = chain('2023-01-10');
console.log(end.diffInDays(start)); // Output: 9

Example 5: Date Range Operations ​

typescript
const date = chain('2023-01-15');
date.startOf('month'); // 2023-01-01 00:00:00
date.endOf('month');   // 2023-01-31 23:59:59.999