时间助手

用于生成时间值、在 12/24 小时格式之间转换、吸附到步长以及解析时间配置的函数。

import {
generateHours,
generateHours12,
generateMinutes,
generateSeconds,
adjustMinuteToStep,
adjustSecondToStep,
to12Hour,
to24Hour,
resolveTimeConfig,
} from "react-date-range-picker-headless";

generateHours

生成一个 24 小时制的值数组。

签名generateHours(): number[]
返回值[0, 1, 2, ..., 23]

generateHours12

生成一个 12 小时制的值数组。

签名generateHours12(): number[]
返回值[1, 2, 3, ..., 12]

generateMinutes

根据步长筛选并生成分钟数组。

签名generateMinutes(minuteStep?: MinuteStep): number[]
默认值5
generateMinutes(); // [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55]
generateMinutes(15); // [0, 15, 30, 45]
generateMinutes(1); // [0, 1, 2, ..., 59]

generateSeconds

根据步长筛选并生成秒数数组。

签名generateSeconds(secondStep?: SecondStep): number[]
默认值1
generateSeconds(); // [0, 1, 2, ..., 59]
generateSeconds(15); // [0, 15, 30, 45]

adjustMinuteToStep

将分钟值吸附到最近的有效步长(向下取整)。

签名adjustMinuteToStep(minute: number, minuteStep: MinuteStep): number
adjustMinuteToStep(7, 5); // 5
adjustMinuteToStep(13, 10); // 10
adjustMinuteToStep(29, 15); // 15

adjustSecondToStep

将秒数值吸附到最近的有效步长(向下取整)。

签名adjustSecondToStep(second: number, secondStep: SecondStep): number
adjustSecondToStep(7, 5); // 5
adjustSecondToStep(14, 10); // 10

to12Hour

将 24 小时制的值转换为带 AM/PM 的 12 小时格式。

签名to12Hour(hour24: number): { hour: number; period: TimePeriod }
to12Hour(0); // { hour: 12, period: "AM" }
to12Hour(12); // { hour: 12, period: "PM" }
to12Hour(13); // { hour: 1, period: "PM" }
to12Hour(23); // { hour: 11, period: "PM" }

to24Hour

将带 AM/PM 的 12 小时制的值转换为 24 小时格式。

签名to24Hour(hour12: number, period: TimePeriod): number
to24Hour(12, "AM"); // 0
to24Hour(12, "PM"); // 12
to24Hour(1, "PM"); // 13
to24Hour(11, "PM"); // 23

resolveTimeConfig

使用默认值解析部分的 TimeConfig

签名resolveTimeConfig(config?: TimeConfig): Required<TimeConfig>
字段默认值
precision"minute"
hourFormat"24"
minuteStep5
secondStep1
itemHeight32
resolveTimeConfig();
// { precision: "minute", hourFormat: "24", minuteStep: 5, secondStep: 1, itemHeight: 32 }
resolveTimeConfig({ precision: "second", hourFormat: "12" });
// { precision: "second", hourFormat: "12", minuteStep: 5, secondStep: 1, itemHeight: 32 }