Skip to content

日期字段

日期字段将日期保存到数据库,并为管理面板提供一个可自定义的时间选择器界面。

Shows a Date field in the Payload Admin Panel

此字段使用 react-datepicker 组件作为 UI。

要添加日期字段,在字段配置中将类型设置为 date:

javascript
import type { Field } from 'payload'

export const MyDateField: Field = {
  // ...
  type: 'date', 
}

配置选项

选项描述
name *用作存储和从数据库中检索时的属性名。更多
label在管理面板中用作字段标签的文本,或包含每种语言键的对象。
index为该字段建立索引以提高查询速度。如果用户经常对该字段的数据执行查询,请将此字段设置为 true。
validate提供一个自定义验证函数,该函数将在管理面板和后端执行。更多
saveToJWT如果该字段是顶层字段,并且嵌套在支持身份验证的配置中,则将其数据包含在用户 JWT 中。
hooks提供字段钩子以控制该字段的逻辑。更多细节。
access提供字段访问控制,指定哪些用户可以查看和操作该字段的数据。更多细节。
hidden完全限制该字段在所有 API 中的可见性。仍然会保存到数据库,但不会出现在任何 API 或管理面板中。
defaultValue提供用于此字段默认值的数据。更多
localized启用该字段的本地化。需要在基础配置中启用本地化。
required要求此字段有值。
admin管理员特定配置。更多细节。
custom添加自定义数据的扩展点(例如,插件)。
timezone *设置为 true 以启用此字段的时区选择。更多细节。
typescriptSchema提供 JSON 模式以覆盖字段类型生成。
virtual提供 true 以禁用数据库中的字段。请参阅虚拟字段。

星号表示该属性是必需的。

管理员选项

要自定义日期字段在管理面板中的外观和行为,可以使用管理员选项:

javascript
import type { Field } from 'payload'

export const MyDateField: Field = {
  // ...
  admin: {
    
    // ...
  },
}

日期字段继承了基础字段管理员配置中的所有默认选项,并具有以下附加选项:

属性描述
placeholder字段的占位符文本。
date传递选项以自定义日期字段的外观。
date.displayFormat设置日期在字段单元格中的显示格式。
date.pickerAppearance *确定日期选择器的外观:dayAndTime、timeOnly、dayOnly、monthOnly。
date.monthsToShow *显示的月份数量,最大为 2。默认值为 1。
date.minDate *允许的最小日期值。
date.maxDate *允许的最大日期值。
date.minTime *允许的最早时间值。
date.maxTime *允许的最晚时间值。
date.overrides *将任何有效的属性直接传递给 react-datepicker。
date.timeIntervals *显示的时间间隔。默认值为 30 分钟。
date.timeFormat *确定时间格式。默认值为 'h:mm aa'。

此属性直接传递给 react-datepicker。

显示格式和选择器外观

这些属性仅影响日期在 UI 中的显示方式。完整的日期始终以 YYYY-MM-DDTHH:mm:ss.SSSZ 格式存储(例如:1999-01-01T8:00:00.000+05:00)。

  • displayFormat 决定日期在字段单元格中的显示方式,可以传递任何有效的 Unicode 日期格式。
  • pickerAppearance 设置 react-datepicker 的外观,提供的选项有:dayAndTime、dayOnly、timeOnly 和 monthOnly。默认情况下,日期选择器将显示 dayOnly。

当只设置 pickerAppearance 时,相应的格式将呈现在日期字段单元格中。如果要覆盖此格式,请设置 displayFormat

示例

collections/ExampleCollection.ts

javascript
import type { CollectionConfig } from 'payload'

export const ExampleCollection: CollectionConfig = {
  slug: 'example-collection',
  fields: [
    {
      name: 'dateOnly',
      type: 'date',
      admin: {
        date: {
          pickerAppearance: 'dayOnly',
          displayFormat: 'd MMM yyy',
        },
      },
    },
    {
      name: 'timeOnly',
      type: 'date',
      admin: {
        date: {
          pickerAppearance: 'timeOnly',
          displayFormat: 'h:mm:ss a',
        },
      },
    },
    {
      name: 'monthOnly',
      type: 'date',
      admin: {
        date: {
          pickerAppearance: 'monthOnly',
          displayFormat: 'MMMM yyyy',
        },
      },
    },
  ],
}