如何使用 momentjs 在 react-big-calendar 上设置本地化
How to set up localization on react-big-calendar using momentjs
https://jquense.github.io/react-big-calendar/examples/index.html
我正在尝试实现与上述示例类似的东西,但使用的是 momentjs 而不是 globalizer。
那么如何从 momentjs 导入我需要的时区并在我的日历中使用它,以便用户可以选择时区和语言
编辑:
这是我的代码,目前还很基础
const localizer = momentLocalizer(moment)
const DragAndDropCalendar = withDragAndDrop(Calendar)
const cultures = ['en', 'en-GB', 'es', 'fr', 'ar-AE']
<DragAndDropCalendar
selectable
localizer={localizer}
events={schedule}
className="cal_height"
style={{ height: 1550 }}
onSelectSlot={(e) => handlecreateSchedule(e)}
onSelectEvent={(e) => handleselectSchedule(e)}
onEventDrop={handleupdateSchedule}
defaultView="week"
min={new Date(today.getFullYear(), today.getMonth(), today.getDate(), 8)}
scrollToTime={moment().set({ h: 10, m: 0 }).toDate()}
timeslots={2}
step={15}
popup
tooltipAccessor={(e) => e.title}
startAccessor="start"
endAccessor="end"
components={{
event: EventComponent,
}}
culture={cultures}
/>
您正确设置了本地化,但您的本地化程序首先需要设置默认时区。首先,您必须使用 moment-timezone。默认情况下,它使用您用户的默认(浏览器本地)时区。要更改它,您可以重置 moment 使用的默认时区。
moment.tz.setDefault(String);
你更大的问题是,目前React-Big-Calendar并不完全支持时区切换。这主要是由于它在内部使用 date-fns
库创建时隙,而不是使用本地化方法。这是在 this issue.
中列出的
最终编辑: RBC 的最新版本 (0.36.0) 现在具有完整的时区支持,无论是使用 momentLocalizer
还是新的 luxonLocalizer
.文档站点尚未更新,但如果您 运行 在 'examples' 本地,您会找到所有信息。
https://jquense.github.io/react-big-calendar/examples/index.html
我正在尝试实现与上述示例类似的东西,但使用的是 momentjs 而不是 globalizer。
那么如何从 momentjs 导入我需要的时区并在我的日历中使用它,以便用户可以选择时区和语言
编辑:
这是我的代码,目前还很基础
const localizer = momentLocalizer(moment)
const DragAndDropCalendar = withDragAndDrop(Calendar)
const cultures = ['en', 'en-GB', 'es', 'fr', 'ar-AE']
<DragAndDropCalendar
selectable
localizer={localizer}
events={schedule}
className="cal_height"
style={{ height: 1550 }}
onSelectSlot={(e) => handlecreateSchedule(e)}
onSelectEvent={(e) => handleselectSchedule(e)}
onEventDrop={handleupdateSchedule}
defaultView="week"
min={new Date(today.getFullYear(), today.getMonth(), today.getDate(), 8)}
scrollToTime={moment().set({ h: 10, m: 0 }).toDate()}
timeslots={2}
step={15}
popup
tooltipAccessor={(e) => e.title}
startAccessor="start"
endAccessor="end"
components={{
event: EventComponent,
}}
culture={cultures}
/>
您正确设置了本地化,但您的本地化程序首先需要设置默认时区。首先,您必须使用 moment-timezone。默认情况下,它使用您用户的默认(浏览器本地)时区。要更改它,您可以重置 moment 使用的默认时区。
moment.tz.setDefault(String);
你更大的问题是,目前React-Big-Calendar并不完全支持时区切换。这主要是由于它在内部使用 date-fns
库创建时隙,而不是使用本地化方法。这是在 this issue.
最终编辑: RBC 的最新版本 (0.36.0) 现在具有完整的时区支持,无论是使用 momentLocalizer
还是新的 luxonLocalizer
.文档站点尚未更新,但如果您 运行 在 'examples' 本地,您会找到所有信息。