A simple object containing some date math utils in the spirit of Moment.js. Unlike Moment this module, returns real date objects, so it isn't chainable.
import * as dateMath from 'date-arithmetic'
var date = dateMath.month(new Date)
all api methods return a new date. Date objects are never mutated.
get and set date part values.
dateMath.milliseconds(date, [value])
dateMath.seconds(date, [value])
dateMath.minutes(date, [value])
dateMath.hours(date, [value])
dateMath.date(date, [value])
dateMath.day(date, [value])
dateMath.weekday(date, [value], [firstOfWeek = 0])
dateMath.month(date, [value])
dateMath.year(date, [value])
dateMath.decade(date, [value])
dateMath.century(date, [value])
return a new date with the relevent date parts zero'd out. You only need to provide a firstOfWeek
when the unit is 'week'
dateMath.startOf(new Date, 'day') // -> no time components
Valid unit values are; "seconds", "minutes", "hours", "day", "week", "month", "year", "decade", "century"
the opposite of startOf
dateMath.endOf(new Date, 'day') // -> one millisecond before tomorrow
Valid unit values are; "milliseconds", "seconds", "minutes", "hours", "day", "weekday", "month", "year", "decade", "century"
.
Arithmetic functions
dateMath.add(date, value, unit)
dateMath.subtract(date, value, unit)
dateMath.eq(dateA, dateB, [unit])
dateMath.neq(dateA, dateB, [unit])
dateMath.gte(dateA, dateB, [unit])
dateMath.gt(dateA, dateB, [unit])
dateMath.lte(dateA, dateB, [unit])
dateMath.lt(dateA, dateB, [unit])
dateMath.inRange(day, min, max, unit)
dateMath.min(dateA, dateB, dateN)
dateMath.max(dateA, dateB, dateN)
dateMath.diff(dateA, dateB, unit, asFloat)
Valid unit values are; "seconds", "minutes", "hours", "day", "week", "month", "year", "decade", "century"