/**
 * Test if a type is a date
 * @remarks
 * Dates across frame boundaries loose instanceof and new Date('test') is an invalid date.
 * @param Values across frame boundary
 * @returns
 */
export declare const isValidDate: (d: any) => boolean;
export declare const dayDiff: (d1: Date, d2: Date) => number;
export declare const monthDiff: (startDate: Date, endDate: Date) => number;
export declare const yearDiff: (d1: Date, d2: Date) => number;
export declare const dateUnitDiff: (d1: Date, d2: Date, unit: string) => number;
export declare enum DateUnit {
    day = "d",
    month = "m",
    year = "y"
}
export declare const addDateUnit: (date: Date, count: number, unit: string) => Date;
export declare const stringToLocalDate: (value: string | String) => Date;
export declare const isISODateString: (value: string | String) => boolean;
export declare const toUTCDate: (utc: Date) => Date;
export declare const toLocalDate: (utc: Date) => Date;
export declare const toISODateString: (date: Date) => string;
export declare const toMidnight: (date: Date | number) => Date;
export declare const today: () => Date;
export declare const largestDateUnit: (datesOrig: Date[], sorted?: boolean, _date1904?: boolean) => DateUnit;
/**
 * Returns the time as a string
 *
 * @param precision the precision of time. Set to 1 if exact
 * @defaultValue - to the nearest minute
 */
export declare const nowAsTimeString: (date1904?: boolean, precision?: number) => string;
/**
 * Returns the date as a string
 *
 * @param precision the precision of time. Set to 1 if exact
 * @defaultValue - to the nearest minute
 */
export declare const nowAsDateString: (date1904?: boolean, precision?: number) => string;
export interface ParsedDateTime {
    /** year */
    year: number;
    /** month. 1 based. 1 = Jan, 12 = Dec  */
    month: number;
    /** day of month. 1 based */
    day: number;
    /** hour. a 24 hour clock */
    hour: number;
    /** minute. a 0 based */
    minute: number;
    /** second. 0 based */
    second: number;
    /** second. 0 based */
    millis: number;
    /** second. 1 based from Monday. 1 = Mon, 2 = Tue, ..., 7 = Sun */
    dow: number;
    /** date component without the time */
    /** data and time component */
    oaDateTime: number;
}
export declare const parseOADate: (oaDate: number, date1904?: boolean) => ParsedDateTime;
/**
 * Note - This function currently only supports the leap year bug for hours.
 */
export declare const oaDateFromParsed: (parsed: ParsedDateTime, date1904?: boolean) => number;
export declare const fromOADate: (oaDate: number, date1904?: boolean) => Date;
/**
 * Encode date to oa date (ole automation, used by Excel)
 * @param {Date} date
 * @param {boolean} [date1904] Whether to use the 1904 Date System. See https://bettersolutions.com/excel/dates-times/1904-date-system.htm
 *
 * http://markitondemand.github.io/moment-msdate/
 *
 * https://docs.microsoft.com/en-US/office/troubleshoot/excel/wrongly-assumes-1900-is-leap-year
 * https://docs.microsoft.com/en-us/dotnet/api/system.datetime.tooadate?redirectedfrom=MSDN&view=net-5.0#System_DateTime_ToOADate
 * https://bettersolutions.com/excel/dates-times/1904-date-system.htm
 */
export declare const toOADate: (date: Date, date1904?: boolean) => number;
export interface DateNumberInput {
    numberFormat: string;
    asOADate: number;
    asJSDate: Date;
}
export interface ParsedDateTimeInput {
    numberFormat: string;
    parsed: Partial<ParsedDateTime>;
    leadingText: string;
}
export declare const parseAsTimeInput: (strValue: string, date1904?: boolean, allowLeadingText?: boolean) => ParsedDateTimeInput | null;
/**
 * Will return a DateNumberInput or null
 * @param strValue
 * @returns DateNumberInput is parsable as a date or null if not
 */
export declare const parseAsDateInput: (strValue: string, date1904?: boolean, currentTime?: number) => DateNumberInput | null;
export declare function isDateFormatter(fmt: string): boolean;
export declare function isTimeFormatter(fmt: string): boolean;
//# sourceMappingURL=DateUtils.d.ts.map