Conversion des valeurs d'horodatage

Dernière modification : jeudi 15 avril 2010

S’applique à : SharePoint Foundation 2010

Microsoft SharePoint Foundation stocke les valeurs d’horodatage au format UTC (Coordinated Universal Time) et la plupart des valeurs d’horodatage renvoyées par les membres des modèles objets sont de ce format. Les seules exceptions sont les valeurs des colonnes de liste obtenues via le programme d’indexation de la classe SPListItem, dont le format correspond à l’heure locale du site. Utilisez la propriété DatesInUtc de la classe SPQuery pour que le programme d’indexation renvoie des valeurs au format UTC.

Pour convertir des valeurs du format UTC en heure locale, utilisez la méthode UTCToLocalTime de la classe SPTimeZone, accessible via la propriété RegionalSettings du site actif, comme suit : mySite.RegionalSettings.TimeZone.UtcTimeToLocalTime(date). Pour convertir des valeurs en heure locale au format UTC, utilisez la méthode LocalTimeToUTC.

Outre la conversion entre les formats heure locale et UTC, vous pouvez être amené à convertir des formats de date et d'heure, par exemple du format ISO8601 (YYYY-MM-DDTHH:MM:SSZ) au format System.DateTime (mm/dd/yyyy hh:mm:ss AM ou PM) et vice-versa. La classe SPUtility fournit plusieurs méthodes de conversion ou de modification des valeurs d'horodatage, par exemple :

  • CreateISO8601DateTimeFromSystemDateTime — du format DateTime système au format ISO8601 (yyyy-mm-ddThh:mm:ssZ). Cette méthode est utile, par exemple, lors de la création d’une requête avec un filtre basé sur une valeur System.DateTime. L’exemple suivant renvoie tous les éléments d’une bibliothèque de documents qui ont été modifiés au cours des cinq derniers jours.

    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)));
    

    Dans l’exemple, la méthode CreateISO8601DateTimeFromSystemDateTime convertit une valeur DateTime au format ISO8601 à utiliser dans une chaîne de requête en langage CAML (Collaborative Application Markup Language). La méthode Format de System.String insère la valeur convertie dans la chaîne de requête.

  • CreateSystemDateTimeFromXmlDataDateTimeFormat — du format ISO8601 DateTime au format System.DateTime (inverse de la méthode précédente).

    Vous pouvez utiliser cette méthode, par exemple, dans le gestionnaire d'événements d'une bibliothèque de documents où les valeurs de colonne DateTime personnalisées sont renvoyées sous forme de chaînes au format ISO8601 via les propriétés PropertiesBefore et PropertiesAfter de la classe SPListEvent. Cette méthode peut permettre de convertir les chaînes en valeur DateTime.

  • FormatDate — du format System.DateTime en un format SPDateFormat spécifié à l'aide des paramètres régionaux actifs du site.

  • ParseDate — des chaînes spécifiées contenant les valeurs d'horodatage en un objet System.DateTime utilisant les paramètres régionaux actifs du site.

Voir aussi

Concepts

Comment : définir la culture et la langue

Tâches de développement SharePoint : comment faire...?

Utilisation des objets Liste et des collections