跳到內容
+

UTC 與時區

日期與時間選取器支援 UTC 與時區。

概觀

預設情況下,元件將始終使用您的 value / defaultValue prop 的時區

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

您可以使用 timezone prop 明確定義應呈現值的時區

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

按下 Enter 開始編輯

如果元件沒有 valuedefaultValue 從中推斷時區,或者您不想在其原始時區中呈現值,則將需要此操作。

支援的時區

時區 描述
"UTC" 將使用協調世界時
"default" 將使用您的日期函式庫的預設時區,可以使用以下方式設定此值
- dayjs.tz.setDefault 在 dayjs 上
- Settings.defaultZone 在 luxon 上
- moment.tz.setDefault 在 moment 上
"system" 將使用系統的本地時區
IANA 標準時區 範例:"Europe/Paris""America/New_York"
所有 IANA 時區的列表
固定偏移量 範例:"UTC+7"
僅適用於 Luxon

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

與 Day.js 一起使用

Day.js 與 UTC

在使用 Day.js 的 UTC 日期之前,您必須啟用 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 prop

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

請參閱以下文件,以完整參考此處提及的元件可用的所有 props 和類別。