如何使用C#调用Notion API向日历数据库写入日期时去除时间部分
问题根因
Notion API 对日期字段的格式判定规则为:如果传入值带时间分量,就会自动按「日期+时间」类型渲染,默认展示12:00 AM(UTC);只有传入符合yyyy-MM-dd格式的纯日期字符串时,才会按纯日期格式展示。
你当前代码中直接传入DateTime类型对象时,SDK序列化会自动附带时间部分(哪怕时间是0点),因此会出现多余的时间显示。另外你的asdadsasd方法中存在一个鉴权参数错误:创建Notion客户端时AuthToken误传为TOKEN.Calendar_ID,会导致接口调用鉴权失败。
修复方案
- 日期字段赋值时,先取
DateTime的纯日期部分,再显式转换为yyyy-MM-dd格式的字符串赋值给Start属性,不要直接传DateTime对象 - 修正
asdadsasd方法中的客户端鉴权参数错误
修正后的核心日期属性代码片段:
.AddProperty("date", new DatePropertyValue { Date = new Date { // 取纯日期部分转成指定格式字符串,避免附带时间分量 Start = _111.datee.Date.ToString("yyyy-MM-dd") } })
asdadsasd方法中创建客户端的代码修正为:
var _client = NotionClientFactory.Create(new ClientOptions { AuthToken = TOKEN.Token // 原代码此处误写为Calendar_ID,会导致鉴权失败 });
注意事项
- 纯日期场景必须严格使用
yyyy-MM-dd格式的字符串传值,Notion识别后就不会再展示时间和UTC标识 - 只有需要记录具体时间的场景,才需要传入带时区、时分秒的ISO8601格式时间值
内容的提问来源于stack exchange,提问作者occosi
相关产品推荐
相关产品推荐

