日付および時刻の値を変換する

最終更新日: 2010年4月15日

適用対象: SharePoint Foundation 2010

Microsoft SharePoint Foundation では、日付および時刻の値が UTC (協定世界時) 形式で格納され、オブジェクト モデルのメンバーによって返される日付および時刻の値はほとんどすべてが UTC 形式です。唯一の例外は、SPListItem のインデクサーによって取得されるリスト列の値で、これはサイトの現地時刻の形式となります。インデクサーを使用して UTC 形式の値を返すには、SPQuery クラスの DatesInUtc プロパティを使用します。

UTC 形式の値を現地時刻に変換するには、SPTimeZone クラスの UTCToLocalTime メソッドを使用します。このメソッドには、現在のサイトの RegionalSettings プロパティを使用して mySite.RegionalSettings.TimeZone.UtcTimeToLocalTime(date) のようにアクセスできます。値を現地時刻から UTC 形式に変換するには、LocalTimeToUTC メソッドを使用します。

現地時刻と UTC 形式との間の変換に加えて、ISO8601 形式 (YYYY-MM-DDTHH:MM:SSZ) と System.DateTime 形式 (mm/dd/yyyy hh:mm:ss AM または PM) の間など、他の形式間での日付および時刻の変換が必要になる場合もあります。SPUtility クラスには、次に示すように、日付および時刻の値の形式を変換または変更するために使用できるいくつかのメソッドが用意されています。

  • CreateISO8601DateTimeFromSystemDateTime - システム DateTime 形式から ISO8601 DateTime 形式 (yyyy-mm-ddThh:mm:ssZ) への変換。このメソッドは、System.DateTime 値に基づくフィルターを使用したクエリを作成するときなどに便利です。次の例は、過去 5 日間に変更されたドキュメント ライブラリ内のすべてのアイテムを返します。

    Dim query As New SPQuery()
    
    query.Query = 
        String.Format("<Where><Gt><FieldRef Name='Modified'/>" _
        & "<Value Type='DateTime' 
        StorageTZ='TRUE'>{0}</Value></Gt></Where>", _
        SPUtility.CreateISO8601DateTimeFromSystemDateTime
        (DateTime.UtcNow.AddDays(-5)))
    
    SPQuery query = new SPQuery();
    
    query.Query = 
        String.Format("<Where><Gt><FieldRef Name='Modified'/>" +
        "<Value Type='DateTime' 
        StorageTZ='TRUE'>{0}</Value></Gt></Where>",
        SPUtility.CreateISO8601DateTimeFromSystemDateTime
        (DateTime.UtcNow.AddDays(-5)));
    

    この例では、CAML (Collaborative Application Markup Language) のクエリ文字列内で使用できるように、CreateISO8601DateTimeFromSystemDateTime メソッドが DateTime 値を ISO8601 形式に変換しています。System.String の Format メソッドにより、変換された値がクエリ文字列に挿入されます。

  • CreateSystemDateTimeFromXmlDataDateTimeFormat - ISO8601 DateTime 形式から System.DateTime 形式への変換 (前のメソッドの逆)。

    このメソッドは、たとえば、カスタムの DateTime 列の値が SPListEvent クラスの PropertiesBefore および PropertiesAfter プロパティによって ISO8601 形式の文字列として返されるような、ドキュメント ライブラリ イベント ハンドラで使用できます。このメソッドを使用して、それらの文字列を DateTime 値に変換できます。

  • FormatDate - サイトの現在の地域設定を使用して、System.DateTime 形式から指定された SPDateFormat 形式に変換します。

  • ParseDate - サイトの現在の地域設定を使用して、日付および時刻の値を含む指定された文字列を System.DateTime オブジェクトに変換します。

関連項目

概念

[方法] カルチャと言語を設定する

SharePoint 開発タスク - トピック集

リストのオブジェクトとコレクションを操作する