UNPKG

@gez/date-time-kit

Version:

259 lines (258 loc) 7.4 kB
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; };