SharePoint 2010クライアントモデルのローカル日付の取得

1679 ワード

最近、あるプロジェクトでクライアントモデルで日付タイプのフィールドを取得したところ、取得結果は常に実際の値の時間とは異なり、最初は1日前のように見えたが、注意深く分析したところ、発見時間は8時間前だった.
これは容易に考えられるのがタイムゾーンの問題で、検査を経て管理センターとサイトのタイムゾーンが北京時間に設定されていることがわかりました.つまり、私たちの国の人がよく使うタイムゾーンですが、なぜ8時間も差があるのでしょうか.まず説明しなければならないのはサーバです
日付タイプを直接取得した時刻では、このような状況は発生しません.
クライアントモデルが日付タイプのデータを取得する理由を説明します.
理由はSharePoint 2010データベースの保存時間はUTC時間で保存されていますが、SharePointのサイトに表示されている時間は皆さんが設定したタイムゾーン内型で表示されています.私たちのタイムゾーンが北京のものだとしたらSharePoint
2010年に設定された表示時間は北京タイムゾーンの時間であり、クライアントが取得した日付フォーマットは実質的にローカルタイムゾーンの時間ではなくUTC時間であり、表示されたエラーを招いた.
次のコードは、この問題を解決します.
//             
DateTime UTCDateTime = (DateTime)item[dateTime.InternalName];

//
SP.ClientResult<string> result = Utility.FormatDateTime(clientContext, clientContext.Web, UTCDateTime, DateTimeFormat.DateTime);

SP.Web web = clientContext.Web;
clientContext.Load(web);
clientContext.ExecuteQuery();

//
DateTime rightTime = Convert.ToDateTime(result.Value, new CultureInfo((int)web.Language));

これで私たちの問題を解決しました.
You also can see the guy's blog: http://www.dev4side.com/community/blog/2011/1/5/incorrect-dates-taken-from-sharepoint-2010-client-object-model.aspx