如何在 SharePoint 2013 工作流中检索"仅日期"字段的正确值



我对SharePoint 2013工作流相当陌生,拥有多年的一般C#和其他SharePoint经验。

我的问题在于时区。我正在Visual Studio 2013中开发一个列表工作流,该工作流必须根据列表中当前项目的仅日期字段的值执行一些操作。我正在使用GetDynamicValueProperties检索此字段的值并将其分配给一个变量。但是,如果我检查此值,我可以看到它不正确,因为它是我实际为列表项设置的前一天的 23:00。我假设这是因为无论是仅日期字段,在幕后它仍然存储在常规的 DateTime 对象中。

因此,我所有的日期计算都是 1 天(因为我只使用日期部分)。我注意到所有特定于时区的类和方法都不能在工作流中使用。

有什么方法可以仅正确检索此字段值的日期部分而不对任何偏移量进行硬编码?我最好寻找一种不包括解决方法和黑客的解决方案,并且适用于所有环境。

背景信息:我必须在该日期前n天在给定时间(例如上午8点)执行任务。第二部分也很棘手,因为时间部分也将因此而休息 1 小时。我也在寻找解决方案。

设法在HttpSend活动中调用适当的SharePoint REST API端点来解决它。

SPTimeZone.utcToLocalTime endpoint

SPTimeZone.localTimeToUTC endpoint

我正在将原始日期作为 url 参数传递,并在 JSON 对象中接收转换后的日期,该对象可以在工作流程中轻松解析。根据网站集区域设置进行转换。

注意:从本地转换为 UTC 时,结果字符串末尾包含"Z"字符,表示它确实是 UTC 日期。在工作流中将整个字符串解析为 DateTime 时,它会因此将其转换回原始日期。我已经使用 String.Substring 方法剪切了最后一个字符,它现在工作正常。

最新更新