现在,我正在尝试将以人类可读格式写入的日期解析为 SharePoint 列表将接受的 DateTime 字符串。为了做到这一点,我确定我需要一个类似于 ISO 格式的字符串,如下所示:2007-08-20T00:00:00Z
。似乎 SharePoint 只接受 UTC 中不包含毫秒的 DateTimes(无论出于何种原因,SharePoint 都会给出错误,并且在包含毫秒时不会接受 DateTime),所以我需要将我的本地时间转换为 UTC 时间之前将其转换为 ISO 字符串。
这是下面的代码正在使用的过程。
- 首先,我使用 DateJS 将我的人工日期解析为 JavaScript 日期。(工作正常,但显然 DateJS 已被放弃,所以也许我应该将其更改为使用 MomentJS。)
- 接下来,我尝试在 UTC 中创造一个新的时刻。(这条线非常非常错误,并且使我的程序崩溃。)
- 然后我让 SPServices 将其转换为 ISO。SPServices 会减少 DateTime 的毫秒数,以便 SharePoint 接受它。(工作正常)。
我确信必须有一种更优雅/更有效的方式来实现这一点,而不是将 3 个不同的库拼接在一起。我只是不确定它是什么。
var jScriptStartDate = Date.parse("6/29/2014 8:30am"); //JS Date
var jScriptStartDateUTC = moment(jScriptStartDate).utc(); //local date to UTC.
var startDate = $().SPServices.SPConvertDateToISO({ //Sharepoint ISO 8601 format
dateToConvert: jScriptStartDateUTC,
dateOffset: "" //Sharepoint dates only accept UTC times, aka no dateOffset.
});
newItem.set_item('EventDate', startDate); //EventDate is internal for StartTime