@gez/date-time-kit
Version:
259 lines (258 loc) • 7.4 kB
TypeScript
import type { DataLimit } from '../../i18n';
import { type Weeks } from '../calendar';
export type { DataLimit };
export type QuickKey = DataLimit | 'custom';
export declare const limitKeys: DataLimit[];
export declare const quickKeys: QuickKey[];
export interface QuickGenPeriodTimesOptions {
initTime?: Date;
weekStartAt?: Weeks;
}
export interface GenPeriodTimesOptions extends QuickGenPeriodTimesOptions {
start?: (time: Date, weekOffset: number) => void;
end?: (time: Date, weekOffset: number) => void;
}
export declare const genPeriodTimes: ({ start, end, initTime, weekStartAt }?: GenPeriodTimesOptions) => {
start: Date;
end: Date;
};
export declare const quickGenPeriodTimes: <T extends DataLimit = DataLimit>({ periods, ...options }?: {
periods?: T[];
} & QuickGenPeriodTimesOptions) => Record<Exclude<T, "all">, {
start: Date;
end: Date;
}> & ("all" extends T ? {
all: null;
} : {});
export declare const quickGenPeriodTime: <T extends DataLimit = DataLimit>(period: T, options?: QuickGenPeriodTimesOptions) => T extends "all" ? null : {
start: Date;
end: Date;
};
export type PeriodTimeInfo<T extends QuickKey = QuickKey, RT = Date> = T extends 'all' ? {
type: 'all';
/** Locale time */
start?: null;
/** Locale time */
end?: null;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} : {
type: Exclude<T, 'all'>;
/** Locale time */
start: RT;
/** Locale time */
end: RT;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
};
export declare const quickGenPeriodTimeInfo: <T extends DataLimit = DataLimit>(type: T, options?: QuickGenPeriodTimesOptions, tzOffset?: number) => PeriodTimeInfo<T>;
export declare const localeInfo2UTCInfo: (info: PeriodTimeInfo) => {
type: "all";
/** Locale time */
start?: null;
/** Locale time */
end?: null;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "today";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "yesterday";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "week";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "lastWeek";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "last7Days";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "month";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "last30Days";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "last90Days";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "last180Days";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "last6Month";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "year";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "custom";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
};
export declare const UTCInfo2LocaleInfo: (info: PeriodTimeInfo) => {
type: "all";
/** Locale time */
start?: null;
/** Locale time */
end?: null;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "today";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "yesterday";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "week";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "lastWeek";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "last7Days";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "month";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "last30Days";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "last90Days";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "last180Days";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "last6Month";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "year";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
} | {
type: "custom";
/** Locale time */
start: Date;
/** Locale time */
end: Date;
/** Timezone offset in minutes. e.g. UTC+05:45 => `-345`, UTC-01:00 => `60` */
tzOffset: number;
};