Date Time:Salesforce 日期和时间段选择器
选择多个日期,拖动选择时间段,每个时间块都保存到您自己的 Salesforce 记录中。一个适用于预约、排班和面试的日历时间段选择器,在向导中即可完成设置。
或立即试用在线演示,无需登录 →时间段网格、按日期设置时间、杜绝重复预订、状态颜色。适用于屏幕 Flow 和 Experience Cloud,无需 Apex。
Salesforce 有日期字段和时间字段,却没有时间段选择器。
有了 Date Time,“这四天,9 点到 12 点”一次保存就变成四条记录。
| 您的需求 | 标准 Salesforce | 使用 Date Time |
|---|---|---|
| 多个日期,同一日程 | ✗一次只能一条记录 | ✓单击、拖动或添加循环模式 |
| 直观地选择时间 | ✗在时间字段里手动输入 | ✓在时间段网格上拖动选择 |
| 每天不同的时段 | ✗逐条编辑记录 | ✓每个日期一个网格 |
| 杜绝重复预订 | ✗验证规则或 Apex | ✓已占用的时间段显示为灰色 |
| 状态一目了然 | ✗逐条打开记录 | ✓日期和时间段上都有颜色 |
| 完成设置 | ✗需要开发人员和自定义 LWC | ✓点击式设置向导 |
为什么它比看上去难:在 Salesforce 中打造日历时间段选择器。
日历时间段选择器
上方选日期,下方选时间。单击或拖动选择时间段;每段相邻的时间段保存为一个预订。
- 选择日期
- 拖动选择时间
- 设置状态
- 保存
网格或下拉列表
共用时间或按日期设置时间
设定一天的范围
- Time Interval:任意间隔(常见为 15、30 或 60 分钟)
- Earliest / Latest Time:默认 08:00 到 18:00
- Enable End Time(启用结束时间):同时采集开始和结束时间
专为真实的预约和排班场景打造
以下每一项都是一个设置,而不是定制开发。
- 悬停详情
- 第二个选项列表
- 双月视图
- 屏蔽日期
- 自动命名记录
- 组件内提示消息
- 9 种语言
周视图:看到每个时间,而不只是每个日期
预订色块的高度与时长一致。记录相同,保存方式相同,只是布局不同。
| 视图(View) | 适用场景 |
|---|---|
| 周 | 面试、预约、办公时间。可同时跨天和跨小时拖动选择。 |
| 日历 | 先选日期,再选时间。默认视图。 |
| 日程 | 以列表形式显示未来 60 天,包含开始和结束时间。 |
| 时间轴 | 日期横向展开,记录纵向排列。多日时间块显示为横条。 |
| 使用率 | 容量热力图。与 Booking 搭配使用。 |
两项设置。View 选择打开时的布局;Available Views(可用视图)设置切换器中的视图,例如 calendar,week,agenda。Earliest Time 和 Latest Time 同样限定周视图网格的范围。
Salesforce 时间段排期工具的使用场景
团队使用 Date Time 的十五种方式,以及让每种方式奏效的设置。
面试安排
不同的日期设不同的时间段,按结果着色。
- 30 分钟时间段
- 按日期设置时间
- 状态颜色
预约
仅限营业时间,不允许重叠。
- 阻止冲突
- 08:00 到 17:00
- 开始和结束
排班
拖动一次,每天生成一条班次记录。
- 60 分钟时间段
- 时段分区
- 结束时间
维护窗口
02:00、03:00、04:00 合并为一个 02:00 到 05:00 的窗口。
- 合并时间跨度
- 阻止冲突
送货时间窗
为每个送货日期提供简洁的时间选择器。
- 下拉列表
- 按日期设置时间
诊所预约
精细的时间段,已预约的按颜色标出。
- 15 分钟时间段
- 加载已有记录
- 网格上显示状态
回电安排
销售代表预约客户回电,互不冲突。
- 30 分钟时间段
- 阻止冲突
- 自动命名
客户入门培训
单击两次,排好八周的每周课程。
- 循环模式
- 自动命名
培训课程
上午和下午两段,午餐时间保存为休息。
- 按日期设置时间
- 子块
演示申请
潜在客户在您的站点上选择时间段;已占用的显示为灰色。
- Experience Cloud
- 已有记录只读
QBR 安排
季度末密集安排的 90 分钟业务回顾。
- 双月视图
- 状态颜色
房源看房
空闲、已预约和保留的看房时间段按颜色区分。
- 时间网格
- 网格上显示状态
派工时间窗
现场作业按天排入各个时间窗。
- 按小时的时间段
- 结束时间
网络研讨会报名
每选一个场次生成一条报名记录。
- 下拉列表
- 允许重叠
会议分会场
每天的主题演讲和分会场作为一条带详情的记录。
- 子块
- 时段分区
深入阅读:Salesforce 面试安排和人力派遣与排班。
记录如何保存:您的对象,您的字段
一个子对象,带一个日期字段、一到两个时间字段,以及一个指向父记录的查找字段。向导会以下拉列表的形式列出它们。
| 您对象上的字段 | 类型 | 向导 / App Builder 设置 |
|---|---|---|
| 预约日期 | Date | 日期字段 API 名称 |
| 开始时间 | 时间 | Start Time Field API Name |
| 结束时间 | 时间 | End Time Field API Name |
| 联系人(父记录) | 查找 | 关系字段 API 名称 |
| 状态 可选 | 选项列表 | 状态字段(Status Field) |
| 结束日期 可选 | Date | End Date Field API Name |
只增不删。保存只会插入新记录,绝不删除现有记录。Load Existing Dates 会显示已有的预订,可设为可编辑或只读。
添加到 Lightning 页面
在 Lightning App Builder 中,把 MultiDatePick - Dates & Times 拖到页面上,设置 Config Name。
| 页面 | 您需要设置的内容 |
|---|---|
| 记录页面 | Config Name。页面上的记录自动成为父记录。 |
| 应用程序页面、主页和 Experience 页面 | Config Name 加上 Static Parent Record Id:这些时间所属的记录。 |
| Experience Cloud | 同时开启 Show In-Component Toast,让访客看到保存结果。 |
保存后保持整洁。开启 Show Inline (No Button) 和 Show Done Button in Inline Mode 后,单击“完成”会把选择器折叠为摘要卡片。单击卡片即可重新打开。
详细教程:入门指南和应用程序页面、主页和 Experience 页面。
在 Salesforce 屏幕 Flow(Screen Flow)中添加时间段选择器
把组件拖到屏幕上,将 Config Name 设为您的设置向导配置。所有复选框都来自该配置。
- 屏幕
- Dates & Times
- 配置名称(Config Name)
- Dates With Times JSON
- Parse Date Entries from JSON
- 循环
- 创建记录
| 输出 | Flow 变量 | 包含内容 |
|---|---|---|
Dates With Times JSON selectedDatesWithTimesJson | 文本 | 每个日期及其开始和结束时间。将其解析为可循环的条目,包含 fromDate、toDate、startTime、endTime。 |
Selected Dates selectedDates | 文本集合 | 仅日期,格式为 ISO 字符串。 |
Date Ranges JSON selectedDateRangesJson | 文本 | 开启 Output Date Ranges as JSON 后,连续的日期会合并为日期范围。 |
Sub-Blocks JSON subBlocksJson | 文本 | 时间段之间的空档。使用同一个解析操作。 |
或者干脆不用循环。当配置指定了子对象时,组件会自己保存记录,并填好时间。全程点选,无需 Apex。所有模式都在 Flow 速查表中。
规格
关键信息,一表看完。
| 安全 | 已通过 Salesforce AppExchange 安全审查 |
| 数据 | 100% 原生:您的数据始终留在 Salesforce 中。没有外部服务器,没有外部调用 (callout)。 |
| Salesforce 版本 | Enterprise、Unlimited、Performance、Developer 和 Salesforce Platform,以及各行业云。不支持 Essentials 或 Professional。 |
| 使用位置 | 屏幕 Flow、记录页面、应用程序页面、主页、Experience Cloud 站点 |
| 时间段 | 任意间隔(常见为 15、30 或 60 分钟);网格或下拉列表;可选上午、下午、晚上分组 |
| 时间模式 | 所有日期共用,或按日期设置 |
| 冲突 | block、skip 或 allow;默认向前检查 360 天 |
| 视图 | 日历、周、日程、时间轴、使用率 |
| 语言 | 9 种:英语、西班牙语、法语、德语、意大利语、日语、印地语、巴西葡萄牙语、简体中文 |
| API 版本 | 63.0 |
| 属性 | 90 多个,全部点选设置。完整参考 |
| 设置 | 无代码设置向导、Lightning App Builder 或 Flow Builder |
Salesforce 日期和时间选择器常见问题
管理员常搜的问题,简短作答。
如何在 Salesforce 屏幕 Flow 中添加时间段选择器?
在 Flow Builder 中打开一个屏幕,搜索 MultiDatePick,把 Dates & Times 组件拖到屏幕上,并将 Config Name 设为您在设置向导中创建的配置。所有复选框都来自该配置。当配置指定了子对象时,组件会自己保存记录;或者您也可以把 Dates With Times JSON (Output) 连接到一个文本变量,运行 Parse Date Entries from JSON 操作,循环处理各条目,每条创建一条记录。
每个日期可以设置不同的时间吗?
可以。开启 Allow Different Times Per Date(允许每个日期使用不同时间),每个所选日期都会有自己的时间网格或下拉列表,并按周分组。保持关闭时,一个共用网格会为您选的每个日期应用相同的时段。
它能防止重复预订吗?
能。“冲突行为”默认为 block:该日历上已被现有记录占用的时间段会显示为灰色,无法选择。skip 会保存空闲的时间段并报告已被占用的,适合跨多个日期批量选择。allow 则关闭检查。Conflict Look-Ahead Days 设置向前检查多远,默认 360 天。
可以用下拉列表代替时间网格吗?
可以。将 Time Display Mode(时间显示模式)设为 dropdown 即使用开始和结束时间选择器,或保留 grid,使用可拖动选择的可点击时间段。Time Interval(时间间隔)以分钟为单位设置时间段长度,任意间隔均可(常见为 15、30 或 60),Earliest Time 和 Latest Time 限定一天的范围,默认 08:00 到 18:00。
Salesforce 日期和时间选择器能在 Experience Cloud、应用程序页面和主页上使用吗?
能。在应用程序页面、主页和 Experience Cloud 页面上,设置 Config Name 以及 Static Parent Record Id(这些时间所属的记录)。在 Experience Cloud 上,请开启 Show In-Component Toast,让访客看到保存确认。
MultiDatePick Date Time 组件多少钱?
MultiDatePick 只有一个方案:每用户每月 $20,30 天免费试用,无需信用卡。Date Time、Date 和 Booking 全部包含,所有功能都有。
所有设置,供想了解细节的管理员参考
标签与设置向导、App Builder 和 Flow Builder 中显示的一致,下方附 API 名称。
全部属性参考
配置
| 设置项 | 默认值 | 作用 |
|---|---|---|
Config NameconfigName | - | 从已保存的设置向导配置中加载所有设置。 |
Viewview | calendar | 打开时的布局:calendar、week、agenda、timeline 或 utilization。 |
Available ViewsavailableViews | all | 切换器中提供的视图,以逗号分隔。 |
Agenda FieldsagendaFields | - | 每个日程行上显示的额外字段。留空则沿用 Hover Popover Fields。 |
显示
| 设置项 | 默认值 | 作用 |
|---|---|---|
Button Labellabel | 选择日期和时间 | 打开选择器的按钮上的文字。 |
Calendar TitlemodalTitle | 选择日期和时间 | 日历上方的标题。 |
Show Inline (No Button)showInline | false | 日历始终可见,不显示按钮。 |
Two-Month ViewtwoMonthView | false | 两个月并排显示。 |
Calendar SizecalendarSize | medium | tiny、xsmall(Very Small)、small、medium 或 large。Tiny 和 Very Small 适合实用工具栏、侧边栏和仪表板磁贴。 |
Day Header FormatdayHeaderFormat | 3 | 3 = SUN,2 = SU,1 = S。 |
Week Starts on MondayweekStartsOnMonday | false | 每周从周一开始,而不是周日。 |
Show Recurring Pattern ButtonshowRecurringPattern | true | 星期几、每隔几周以及每月第几次出现。 |
Show Selection SummaryshowSelectedSummary | true | 已选多少个日期,以及它们的范围。 |
Show Done Button in Inline ModeshowDoneButtonInline | true | 单击“完成”后选择器折叠为摘要卡片。 |
Requiredrequired | false | 未选择日期时,Flow 无法继续。 |
时间选择
| 设置项 | 默认值 | 作用 |
|---|---|---|
Time Display ModetimeDisplayMode | grid | grid:可拖动选择的可点击时间段。dropdown:开始和结束时间选择器。 |
Time Interval (Minutes)timeInterval | 30 | 时间段长度(分钟)。任意间隔均可;常见为 15、30 或 60。 |
Earliest TimeminTime | 08:00 | 第一个时间段,24 小时制 HH:mm。 |
Latest TimemaxTime | 18:00 | 最后一个时间段,24 小时制 HH:mm。 |
Allow Different Times Per DateallowDifferentTimes | false | 每个日期都有自己的网格或下拉列表,而不是共用一组时间。 |
Enable End TimeenableEndTime | true | 除开始时间外,还采集结束时间。 |
Group Time Slots by PeriodgroupTimeSlotsByPeriod | false | 上午、下午和晚上三个分区。 |
Max Time SlotsmaxTimeSlotSelection | 0 | 一个用户在所有日期中最多可选的时间段总数。0 = 不限。 |
Allow Whole-Day (No Times)allowWholeDayNoTimes | false | 没有选择时间段的日期保存为全天记录。 |
Start Time Field API NamestartTimeField | - | 用于开始时间的时间字段。 |
End Time Field API NameendTimeField | - | 用于结束时间的时间字段。 |
仅时间网格
| 设置项 | 默认值 | 作用 |
|---|---|---|
Time Grid OnlytimeGridOnly | false | 隐藏日历,只显示某个隐含日期的时间网格。时间段保存到所在记录。 |
Time Grid DatetimeGridDate | - | 明确指定的日期,格式为 YYYY-MM-DD。 |
Time Grid Date FieldtimeGridDateField | - | 从所在记录上读取日期的日期字段。 |
隐含日期的取值顺序:先 Time Grid Date,再 Time Grid Date Field,最后是今天。
冲突与时间跨度
| 设置项 | 默认值 | 作用 |
|---|---|---|
Conflict BehaviorconflictBehavior | block | block:已占用的时间段显示为灰色。skip:保存空闲的,报告其余的。allow:不检查。 |
Buffer Between Bookings (Minutes)bufferMinutes | 0 | 每条现有记录之后预留的周转时间,过后下一个预订才能开始。 |
Conflict Look-Ahead DaysconflictLookAheadDays | 360 | 向前检查现有记录的天数。 |
Consolidate Time SpanconsolidateTimeSpan | false | 把所选时间段合并为一个开始和结束时间;中间的空档保存为子块。 |
Show Sub-Block Toggle ButtonshowSubBlockButton | false | 允许用户手动把时间段标记为子块。 |
状态与显示
| 设置项 | 默认值 | 作用 |
|---|---|---|
Status FieldstatusField | - | 决定颜色的选项列表。 |
Status ColorsstatusColors | - | 例如 Confirmed:green,Pending:orange,Cancelled:red。 |
Status Color DisplaystatusColorDisplay | both | grid、calendar 或 both。 |
Ignored StatuseshideBookingsWithStatus | - | 带有此状态的记录不在网格上显示。 |
Status Field LabelstatusFieldLabel | - | 状态选择器的自定义标签。 |
Second Picklist FieldsecondStatusField | - | 保存时选择的第二个选项列表,例如原因。不按颜色区分。 |
Second Picklist LabelsecondStatusFieldLabel | - | 第二个选项列表的标签。 |
Selectable Second-Picklist ValuesselectableSecondStatuses | - | 允许的值。只有一个值时会自动应用,并隐藏选择器。 |
Hover Popover FieldshoverFields | - | 悬停时显示的字段。 |
Show In-Component ToastshowSuccessToast | false | 在组件内显示保存提示消息。在 Experience Cloud 上必须开启。 |
Show Add to Calendar After SavingshowAddToCalendar | false | 保存后提供一个 .ics 文件,包含刚保存的所有时间,适用于 Outlook、Google 或 Apple。 |
Success Toast Message (optional)successToastMessage | - | 自定义成功提示文字。 |
编辑模式
| 设置项 | 默认值 | 作用 |
|---|---|---|
Enable Edit ModeenableEditMode | true | 直接在组件中管理已保存的记录。 |
Edit Button LabeleditButtonLabel | - | “编辑”开关的自定义标签。 |
Edit Record DisplayeditRecordDisplay | name, status, time | 每行显示哪些详情及其顺序:name(名称)、status(状态)、time(时间)、date(日期)。 |
保存与输出
| 设置项 | 默认值 | 作用 |
|---|---|---|
Static Parent Record IdstaticRecordId | - | 应用程序页面、主页和 Experience 页面上的父记录。 |
Load Existing DatespreloadExistingDates | true | 显示已保存的记录。 |
Existing Dates ModepreloadMode | editable | editable 或 readonly。 |
Append Date/Time to Record NameappendDateTimeToName | true | 用日期和时间自动为每条记录命名。 |
Selected Dates (Output)selectedDates | - | ISO 格式日期,不含时间。 |
Dates With Times JSON (Output)selectedDatesWithTimesJson | - | 每个日期及其时间。传给 Parse Date Entries from JSON。 |
Date Ranges JSON (Output)selectedDateRangesJson | - | 开启 Output Date Ranges as JSON 后,连续的日期以范围形式输出。 |
Sub-Blocks JSON (Output)subBlocksJson | - | 空档记录,使用同一个解析操作。 |
另外还有与 Date 共用的设置:Max Dates Allowed、Allow Past Dates、Earliest 和 Latest Selectable Date、Book Up To (Days Ahead)、Minimum Notice (Hours)、Pre-Selected Dates、Blocked Dates、Only These Dates Are Selectable、Auto-Jump to First Available Date、Record Name Field、Default Record Name、Save Button Label、Child Object、Date、End Date 和 Relationship Field API Names、Parent Record Id Field、屏蔽日期对象设置以及子块对象设置。