M2020

通过MCP/REST API创建的日期字段,为何默认T+1天

M2020Lv.3修习 发布于 最后回复 问答
1 回复116 浏览

【Bug】新增记录时日期字段自动预填为「明天」today+1,浏览器与系统时间均正确

问题概述

新增记录表单中,日期字段会自动预填为明天(today+1)。经验证,浏览器本地时间与服务端时间均正确,仅日期控件的预填值偏移 +1 天,且该值会被真实写入存储(非显示问题)。
3af3462cbf2fd4a0f1acb1b2789aec76.png

复现步骤

  1. 打开任意工作表,点击「新增记录」
  2. 观察日期字段的默认值
  3. 不做任何修改直接提交
  4. 查询该记录,读取日期字段的实际存储值

关键证据(同一条记录、同一时刻)

实际值 正确性
浏览器 new Date().toString() Tue Sep 22 2026 19:26:08 GMT+0800 (China Standard Time) ✅ 正确
记录系统字段 _createdAt 2026-09-22 19:28:08 ✅ 正确
日期字段实际存储值 2026-09-23 ❌ +1 天

项实际值正确性浏览器 new Date().toString()``Tue Sep 22 2026 19:26:08 GMT+0800 (China Standard Time)✅ 正确记录系统字段 _createdAt``2026-09-22 19:28:08✅ 正确日期字段实际存储值**2026-09-23**❌ +1 天 > 浏览器时间正确、服务端时间正确、同一记录的创建时间正确,唯独日期控件预填值为次日。已排除时区与设备时钟:GMT+0800,且北京时间 15:00 时已复现,而全球最快时区 UTC+14 当时也才 21:00,不可能是次日。

影响范围

应用内所有工作表、所有日期字段均复现,非单表特例。

已排除的配置(均已关闭/清空/修改,仍复现)

  • 字段默认值为空 defaultValue: []
  • 保留上次提交内容(retainSubmittedValues)→ 关闭后仍复现
  • 保存草稿(draftsEnabled)→ 关闭后仍复现
  • AI 填充(aiFillEnabled)→ 关闭后仍复现
  • 字段事件 / 联动 → 界面显示为空
  • 删除字段并重建 → 仍复现(说明不是残留的字段级配置)
  • 修改字段名(原「费用日期」→「日期-MCP」)→ 仍复现(排除按名称绑定的规则)
  • 清空别名 alias、关闭必填 required、切换 subType、切换 format、补/清 placeholder → 逐项验证均仍复现
  • 设备 / 浏览器时区 → GMT+0800,new Date() 结果正确

疑似关键线索(对定位最有帮助的一条)

同一张表内放两个 Date 字段做对照:

字段名 创建方式 是否预填次日
日期-MCP API / MCP 创建 ❌ 预填 +1
日期-手工建立 HAP 界面手动创建 ✅ 不预填

字段名创建方式是否预填次日日期-MCP****API / MCP 创建 ❌ 预填 +1 日期-手工建立****HAP 界面手动创建 ✅ 不预填且我已将两字段的全部属性逐项对齐,现在完全一致,仅剩 idname 两项差异(id 平台生成无法修改):

subType=0, required=false, alias=空, placeholder=请选择日期,
format=yyyy-MM-dd, defaultValue=[], isHidden=false,
isReadOnly=false, isUnique=false, remark/desc=空,
advancedSettings.allowtime/sorttype/isdecrypt 全同

属性完全相同,预填行为却不同,指向:

  1. API 创建的字段带有某个未通过接口暴露的隐藏属性;或
  2. 预填逻辑只作用于表单中的第一个日期字段(「日期-手工建立」排在其后)

附带发现(疑似另一个 Bug)

日期字段显示格式设为 yyyy-MM-dd 时,实际渲染成 2026-09-三(把「日」渲染成了星期几);改用 YYYY-MM-DD 则正常。但接口写入 YYYY-MM-DD 后,读回会被规范化为 yyyy-MM-dd

环境信息

  • 组织 / 应用:(按需填写)
  • 客户端:Chrome / Windows
  • 复现时间:2026-09-22 19:26 起

期望结果

日期字段预填值应与浏览器本地日期一致(2026-09-22)。