FixTimeZone.tsx 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import React, { useMemo, useState } from "react";
  2. import { Select, DatePicker } from "@douyinfe/semi-ui";
  3. export default function Demo(props = {}) {
  4. const defaultTimestamp = 1581599305265;
  5. const [timeZone, setTimeZone] = useState("GMT+00:00");
  6. const [value, setValue] = useState(defaultTimestamp);
  7. const [dateValue, setDateValue] = useState();
  8. const gmtList = useMemo(() => {
  9. const list = [];
  10. for (let hourOffset = -11; hourOffset <= 14; hourOffset++) {
  11. const prefix = hourOffset >= 0 ? "+" : "-";
  12. const hOffset = Math.abs(parseInt(hourOffset, 10));
  13. list.push(`GMT${prefix}${String(hOffset).padStart(2, "0")}:00`);
  14. }
  15. return list;
  16. }, []);
  17. const handleChange = (date) => {
  18. if (date instanceof Date) {
  19. const timeStamp = date.valueOf();
  20. console.log(date, timeStamp);
  21. setValue(timeStamp);
  22. setDateValue(date);
  23. }
  24. };
  25. return (
  26. <div style={{ width: 300 }}>
  27. <h5 style={{ margin: 10 }}>Select Time Zone:</h5>
  28. <Select
  29. placeholder={"请选择时区"}
  30. style={{ width: 300 }}
  31. value={timeZone}
  32. showClear={true}
  33. onSelect={(value) => setTimeZone(value)}
  34. >
  35. {gmtList.map((gmt) => (
  36. <Select.Option key={gmt} value={gmt}>
  37. {gmt}
  38. </Select.Option>
  39. ))}
  40. </Select>
  41. <br />
  42. <br />
  43. <DatePicker
  44. timeZone={timeZone}
  45. type={"dateTime"}
  46. // value={value}
  47. value={dateValue}
  48. onChange={handleChange}
  49. />
  50. </div>
  51. );
  52. }