You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让NextUI DateTimePicker显示dd/mm/yyyy格式与12小时制时间

解决NextUI DateTimePicker格式问题

要实现dd/mm/yyyy hh:min am的显示格式,不能仅依赖en-GB locale(该locale默认时间为24小时制),需要手动自定义日期和时间格式:

方法一:直接指定格式属性

利用DatePicker的dateFormat和timeFormat属性分别设置日期、时间格式,或用format属性统一配置:

import { DatePicker, NextUIProvider } from "@nextui-org/react";

<NextUIProvider>
  <DatePicker
    hideTimeZone
    showMonthAndYearPickers
    // 分别设置日期与时间格式
    dateFormat="dd/MM/yyyy"
    timeFormat="hh:mm a"
    // 也可使用统一的format属性
    // format="dd/MM/yyyy hh:mm a"
  />
</NextUIProvider>

方法二:自定义格式化函数(适配复杂场景)

如果需要更灵活的格式解析逻辑,可结合date-fns工具,通过formatter属性自定义处理:

import { DatePicker, NextUIProvider } from "@nextui-org/react";
import { format } from "date-fns";

<NextUIProvider>
  <DatePicker
    hideTimeZone
    showMonthAndYearPickers
    formatter={{
      // 自定义显示格式
      format: (date) => format(date, "dd/MM/yyyy hh:mm a"),
      // 自定义输入解析逻辑(适配dd/mm/yyyy hh:mm am格式)
      parse: (value) => {
        const [datePart, timePart, period] = value.split(" ");
        const [day, month, year] = datePart.split("/").map(Number);
        let [hour, minute] = timePart.split(":").map(Number);
        
        if (period.toLowerCase() === "pm" && hour < 12) hour += 12;
        if (period.toLowerCase() === "am" && hour === 12) hour = 0;
        
        return new Date(year, month - 1, day, hour, minute);
      }
    }}
  />
</NextUIProvider>

关键说明

en-GB locale的时间规则默认是24小时制,因此仅修改locale无法同时满足dd/mm/yyyy日期格式和12小时制带am/pm的需求。方法一适合大多数简单场景,方法二可应对需要自定义输入解析的复杂场景。

内容的提问来源于stack exchange,提问作者Mayeenul Islam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 06:05:06