現在、人間が読める形式で書かれた日付を、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