39 lines
1.3 KiB
JavaScript
39 lines
1.3 KiB
JavaScript
|
import { constructFrom } from "./constructFrom.mjs";
|
||
|
|
||
|
/**
|
||
|
* @name constructNow
|
||
|
* @category Generic Helpers
|
||
|
* @summary Constructs a new current date using the passed value constructor.
|
||
|
* @pure false
|
||
|
*
|
||
|
* @description
|
||
|
* The function constructs a new current date using the constructor from
|
||
|
* the reference date. It helps to build generic functions that accept date
|
||
|
* extensions and use the current date.
|
||
|
*
|
||
|
* It defaults to `Date` if the passed reference date is a number or a string.
|
||
|
*
|
||
|
* @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).
|
||
|
*
|
||
|
* @param date - The reference date to take constructor from
|
||
|
*
|
||
|
* @returns Current date initialized using the given date constructor
|
||
|
*
|
||
|
* @example
|
||
|
* import { constructNow, isSameDay } from 'date-fns'
|
||
|
*
|
||
|
* function isToday<DateType extends Date>(
|
||
|
* date: DateType | number | string,
|
||
|
* ): boolean {
|
||
|
* // If we were to use `new Date()` directly, the function would behave
|
||
|
* // differently in different timezones and return false for the same date.
|
||
|
* return isSameDay(date, constructNow(date));
|
||
|
* }
|
||
|
*/
|
||
|
export function constructNow(date) {
|
||
|
return constructFrom(date, Date.now());
|
||
|
}
|
||
|
|
||
|
// Fallback for modularized imports:
|
||
|
export default constructNow;
|