跳到内容
+

UTC 和时区

日期和时间选择器支持 UTC 和时区。

概述

默认情况下,组件将始终使用您的 value / defaultValue 属性的时区

存储的值2022-04-17T15:30:00-04:00

您可以使用 timezone 属性显式定义应呈现值的时区

存储的值2022-04-17T15:30:00Z

Enter 开始编辑

如果组件没有 valuedefaultValue 来从中推断时区,或者您不想在其原始时区中呈现值,则将需要这样做。

支持的时区

时区 描述
"UTC" 将使用协调世界时
"default" 将使用您的日期库的默认时区,可以使用以下方法设置此值
- dayjs.tz.setDefault on dayjs
- Settings.defaultZone on luxon
- moment.tz.setDefault on moment
"system" 将使用系统的本地时区
IANA 标准区域 示例: "Europe/Paris", "America/New_York"
所有 IANA 区域的列表
固定偏移量 示例: "UTC+7"
仅适用于 Luxon

存储的值2022-04-17T15:30:00Z

与 Day.js 一起使用

Day.js 和 UTC

在使用 UTC 日期与 Day.js 之前,您必须启用 utc 插件

import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';

dayjs.extend(utc);

然后,您可以将您的 UTC 日期传递给您的选择器

import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';

import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';

dayjs.extend(utc);

function App() {
  return (
    <LocalizationProvider dateAdapter={AdapterDayjs}>
      <DateTimePicker defaultValue={dayjs.utc('2022-04-17T15:30')} />
    </LocalizationProvider>
  );
}

存储的值2022-04-17T15:30:00Z

Day.js 和时区

在使用时区与 Day.js 之前,您必须同时启用 utctimezone 插件

import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone';

dayjs.extend(utc);
dayjs.extend(timezone);

然后,您可以将您想要的时区中的日期传递给您的选择器

import dayjs from 'dayjs';
import utc from 'dayjs/plugin/utc';
import timezone from 'dayjs/plugin/timezone';

import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs';
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';

dayjs.extend(utc);
dayjs.extend(timezone);

function App() {
  return (
    <LocalizationProvider dateAdapter={AdapterDayjs}>
      <DateTimePicker
        defaultValue={dayjs.tz('2022-04-17T15:30', 'America/New_York')}
      />
    </LocalizationProvider>
  );
}

存储的值2022-04-17T15:30:00-04:00

与 Luxon 一起使用

Luxon 和 UTC

然后,您可以将您的 UTC 日期传递给您的选择器

import { DateTime } from 'luxon';

import { AdapterLuxon } from '@mui/x-date-pickers/AdapterLuxon';
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';

function App() {
  return (
    <LocalizationProvider dateAdapter={AdapterLuxon}>
      <DateTimePicker
        defaultValue={DateTime.fromISO('2022-04-17T15:30', { zone: 'UTC' })}
      />
    </LocalizationProvider>
  );
}

存储的值2022-04-17T15:30:00.000Z

Luxon 和时区

然后,您可以将您想要的时区中的日期传递给您的选择器

import { DateTime } from 'luxon';

import { AdapterLuxon } from '@mui/x-date-pickers/AdapterLuxon';
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';

function App() {
  return (
    <LocalizationProvider dateAdapter={AdapterLuxon}>
      <DateTimePicker
        defaultValue={DateTime.fromISO('2022-04-17T15:30', {
          zone: 'America/New_York',
        })}
      />
    </LocalizationProvider>
  );
}

存储的值2022-04-17T15:30:00.000-04:00

与 Moment 一起使用

Moment 和 UTC

然后,您可以将您的 UTC 日期传递给您的选择器

import moment from 'moment';

import { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';

function App() {
  return (
    <LocalizationProvider dateAdapter={AdapterMoment}>
      <DateTimePicker defaultValue={moment.utc('2022-04-17T15:30')} />
    </LocalizationProvider>
  );
}

存储的值2022-04-17T15:30:00Z

Moment 和时区

在使用时区与 Moment 之前,您必须将来自 moment-timezone 的默认导出传递给 LocalizationProviderdateLibInstance 属性

import moment from 'moment-timezone';

import { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';

<LocalizationProvider dateAdapter={AdapterMoment} dateLibInstance={moment}>
  {children}
</LocalizationProvider>;

然后,您可以将您想要的时区中的日期传递给您的选择器

import moment from 'moment-timezone';

import { AdapterMoment } from '@mui/x-date-pickers/AdapterMoment';
import { LocalizationProvider } from '@mui/x-date-pickers/LocalizationProvider';
import { DateTimePicker } from '@mui/x-date-pickers/DateTimePicker';

function App() {
  return (
    <LocalizationProvider dateAdapter={AdapterMoment} dateLibInstance={moment}>
      <DateTimePicker
        defaultValue={moment.tz('2022-04-17T15:30', 'America/New_York')}
      />
    </LocalizationProvider>
  );
}

存储的值2022-04-17T15:30:00-04:00

更多高级示例

存储 UTC 日期,但在系统时区中显示

下面的演示展示了如何存储 UTC 日期,同时使用系统时区显示。

存储的值2022-04-17T15:30:00Z

存储 UTC 日期,但在另一个时区中显示

下面的演示展示了如何存储 UTC 日期,同时使用 Pacific/Honolulu 时区显示。

存储的值2022-04-17T15:30:00Z

API

请参阅下面的文档,以获得此处提到的组件的所有属性和类的完整参考。