@ray-js/smart-ui
Version:
轻量、可靠的智能小程序 UI 组件库
73 lines (72 loc) • 3.15 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
/* eslint-disable prefer-destructuring */
import _Calendar from './Calendar';
const SmartCalendar = _Calendar;
const wrapUtc = (dt, targetOffset) => {
const date = new Date(dt);
const offset = date.getTimezoneOffset(); // 获取当前时区的偏移
// 假设我们想要将时间调整为 UTC+8(比如北京时区)
const timeDifference = offset - targetOffset; // 计算差值
// 创建一个新的日期对象,将其调整为目标时区
const adjustedDate = new Date(date.getTime() + timeDifference * 60000); // 时间差转换为毫秒
return adjustedDate.getTime();
};
const unwrapUtc = (dt, targetOffset) => {
const date = new Date(dt);
const offset = date.getTimezoneOffset(); // 获取当前时区的偏移
// 计算反向差值
const timeDifference = targetOffset - offset; // 目标时区偏移量和当前时区偏移量之间的差异
// 创建一个新的日期对象,将其调整回 UTC
const utcDate = new Date(date.getTime() - timeDifference * 60000); // 时间差转换为毫秒
return utcDate.getTime();
};
export const Calendar = props => {
var _a;
const utcOffset = (_a = props.utcOffset) !== null && _a !== void 0 ? _a : -480;
let defaultDate = props.defaultDate;
let maxDate = props.maxDate;
let minDate = props.minDate;
if (utcOffset) {
if (props.defaultDate) {
if (Array.isArray(props.defaultDate)) {
defaultDate = props.defaultDate.map(date => wrapUtc(date, utcOffset));
}
else {
defaultDate = wrapUtc(props.defaultDate, utcOffset);
}
}
if (props.maxDate) {
maxDate = wrapUtc(props.maxDate, utcOffset);
}
if (props.minDate) {
minDate = wrapUtc(props.minDate, utcOffset);
}
}
return (_jsx(SmartCalendar, Object.assign({}, props, { defaultDate: defaultDate, minDate: minDate, maxDate: maxDate, onConfirm: event => {
if (props.onConfirm) {
let detail = event.detail;
if (utcOffset) {
if (Array.isArray(event.detail)) {
detail = event.detail.map(date => new Date(unwrapUtc(date, utcOffset)));
}
else {
detail = new Date(unwrapUtc(event.detail, utcOffset));
}
}
props.onConfirm(Object.assign(Object.assign({}, event), { detail }));
}
}, onSelect: event => {
if (props.onSelect) {
let detail = event.detail;
if (utcOffset) {
if (Array.isArray(event.detail)) {
detail = event.detail.map(date => new Date(unwrapUtc(date, utcOffset)));
}
else {
detail = new Date(unwrapUtc(event.detail, utcOffset));
}
}
props.onSelect(Object.assign(Object.assign({}, event), { detail }));
}
} })));
};