import React, { useMemo, useState } from 'react'; import { ConfigProvider, Select, DatePicker, TimePicker } from '@douyinfe/semi-ui'; import { IANAOffsetMap, zonedTimeToUtc, utcToZonedTime, format as tzFormat } from '@douyinfe/semi-foundation/utils/date-fns-extra'; import { parse, format, addDays, addWeeks, startOfMonth, endOfMonth, addMonths } from 'date-fns'; import zh_CN from '@douyinfe/semi-ui/locale/source/zh_CN'; import en_GB from '@douyinfe/semi-ui/locale/source/en_GB'; import ko_KR from '@douyinfe/semi-ui/locale/source/ko_KR'; import ja_JP from '@douyinfe/semi-ui/locale/source/ja_JP'; const { Option } = Select; const presets = [ { text: 'Today', start: new Date(), end: new Date(), }, { text: 'Tomorrow', start: addDays(new Date(), 1), end: addDays(new Date(), 1), }, { text: 'Next Week', start: addWeeks(new Date(), 1), end: addWeeks(new Date(), 2), }, { text: 'Next Month', start: startOfMonth(addMonths(new Date(), 1)), end: endOfMonth(addMonths(new Date(), 1)), }, { text: 'Today', start: new Date(), end: new Date(), }, { text: 'Tomorrow', start: addDays(new Date(), 1), end: addDays(new Date(), 1), }, { text: 'Next Week', start: addWeeks(new Date(), 1), end: addWeeks(new Date(), 2), }, { text: 'Next Month', start: startOfMonth(addMonths(new Date(), 1)), end: endOfMonth(addMonths(new Date(), 1)), }, ]; const Demo = () => { const [timeZone, setTimeZone] = useState('GMT-08:00'); const [localeCode, setLocaleCode] = useState(zh_CN.code); const defaultTimestamp = 1581599305265; const defaultTimestampEnd = defaultTimestamp + 3600 * 24 * 2 + 1600 * 2; const formatToken = 'yyyy-MM-dd HH:mm:ss'; const defaultDate = parse(`2020-02-13 21:08:25`, formatToken, Date.now()); const gmtList = useMemo( () => IANAOffsetMap.map(([hourOffset, [iana]]) => { const hOffset = Math.abs(parseInt(hourOffset, 10)); const mOffset = Math.abs(Math.abs(hourOffset) - hOffset); const prefix = hourOffset >= 0 ? '+' : '-'; return `GMT${prefix}${String(hOffset).padStart(2, '0')}:${String(mOffset * 60).padStart(2, '0')}`; }), [] ); const localeList = useMemo(() => [zh_CN, en_GB, ko_KR, ja_JP], []); const [timeDate, setTimeDate] = useState(new Date(defaultTimestamp)); const [date, setDate] = useState(new Date(defaultTimestamp)); const Item = useMemo(() => (props = {}) =>
, []); return (