我尝试将日期从日期选择器转换为 iso 格式,但总是比我的时间晚 3 小时。我该如何解决它?
这是我的代码:
'use client';
import React, { useEffect, useState } from 'react';
import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
import { DesktopDatePicker } from '@mui/x-date-pickers/DesktopDatePicker';
import styles from '@/app/broadcast/broadcast.module.scss';
import Input from '@/components/Input/Input';
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
import './styles.css';
import dayjs, { Dayjs } from 'dayjs';
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone';
dayjs.extend(utc);
dayjs.extend(timezone);
dayjs.tz.setDefault(Intl.DateTimeFormat().resolvedOptions().timeZone);
const DatePicker = ({...props}) => {
const [subscribedAfter, setSubscribedAfter] =
useState<Dayjs | null>(dayjs());
return (
<>
<LocalizationProvider dateAdapter={AdapterDayjs}>
<DesktopDatePicker
className={styles.form__input_date}
value={subscribedBefore}
format={'MMMM DD, YYYY'}
onChange={(newValue) => setSubscribedBefore(newValue)}
renderLoading={() =>
<Input {...props}
/>}
/>
</LocalizationProvider>
</>
);
};
这是我的 ISO 格式日期:2024-06-30T11:47:42.419Z(实时 14:47)
如有任何帮助,我们将不胜感激。
我尝试从浏览器获取时区并自行设置,但不起作用。
我通过在我的钩子中添加 utc 偏移量找到了解决方案。就像这样:
const [subscribedAfter, setSubscribedAfter] =
useState(dayjs.utc().utcOffset(0, true));