datetime
utc
SharePoint

SharePointのアイテム更新日時などDateTime型の値を取得するときの注意点

SharePointのアイテム更新日時など、DateTime型の値の取得につまづいたのでメモ。

作成日時、更新日時を取得する場合、SharePointでは2つの取り方がある。


  1. SPWeb.Created(例:サイト)

    プロパティから取る方法。プログラムから取るなら普通はこちら。


  2. SPListItem["Created"](例:リストアイテム)

    リストの列値から取る方法。アイテムの情報が欲しい場合だけかな...


問題はこの2つで取れる時間が違うということ。

例えば日本時間の 2019/02/01 AM8:00 に作成したとすると、以下のようになる。


  1. の場合 2019/01/31 23:00

  2. の場合 2019/02/01 08:00


DateTime型のプロパティKind

なぜか。DateTime型のプロパティKind の値が違うから。


  1. の場合 Utc

  2. の場合 Unspecified


解決策

DateTime.Kind == DateTimeKind.Utc の場合は

DateTime.ToLocalTime() を利用してローカル時間を取得する。

SPListItem.Created.ToLocalTime();

→2019/02/01 08:00