Conversión de valores de fecha y hora

Última modificación: jueves, 15 de abril de 2010

Hace referencia a: SharePoint Foundation 2010

Microsoft SharePoint Foundation almacena los valores de fecha y hora en formato de hora universal coordinada (UTC) y casi todos los valores de fecha y hora que los miembros del modelo de objetos devuelven están en formato UTC. La única excepción son los valores de la columna de lista que se obtienen mediante el indizador para la clase SPListItem, que tienen formato de la hora local para el sitio. Use la propiedad DatesInUtc de la clase SPQuery para usar el indizador para devolver los valores en formato UTC.

Para convertir valores de formato UTC a la hora local, use el método UTCToLocalTime de la clase SPTimeZone, al que se puede tener acceso a través de la propiedad RegionalSettings para el sitio actual, como sigue: mySite.RegionalSettings.TimeZone.UtcTimeToLocalTime(date). Para convertir valores de la hora local a formato UTC, use el método LocalTimeToUTC.

Además de la conversión entre formatos de hora UTC y local, es posible que también deba realizar la conversión entre formatos de fecha y hora, por ejemplo, del formato ISO8601 (AAAA-MM-DDTHH:MM:SSZ) al formato (mm/dd/aaaa hh:mm:ss a.m o p.m) de System.DateTime, o a la inversa. La clase SPUtility proporciona varios métodos que se pueden usar para convertir o modificar el formato de los valores de fecha y hora, como los siguientes:

  • CreateISO8601DateTimeFromSystemDateTime — Del formato DateTime del sistema al formato DateTime ISO8601 (aaaa-mm-ddThh:mm:ssZ). Este método es útil, por ejemplo, cuando se crea una consulta con un filtro basado en un valor System.DateTime. El ejemplo siguiente devuelve todos los elementos de una biblioteca de documentos que se han modificado en los últimos cinco días.

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

    En el ejemplo, el método CreateISO8601DateTimeFromSystemDateTime convierte un valor DateTime al formato ISO8601 para usarlo en una cadena de consulta en Lenguaje de marcado de aplicaciones de colaboración (CAML). El método Format de System.String inserta el valor convertido en la cadena de consulta.

  • CreateSystemDateTimeFromXmlDataDateTimeFormat — Del formato DateTime ISO8601 al formato System.DateTime (lo contrario al método anterior).

    Puede usar este método, por ejemplo, en un controlador de eventos de la biblioteca de documentos donde los valores de columna DateTime personalizados se devuelven como cadenas en formato ISO8601 mediante las propiedades PropertiesBefore y PropertiesAfter de la clase SPListEvent. Este método se puede usar para convertir las cadenas en un valor DateTime.

  • FormatDate — Del formato System.DateTime a un formato SPDateFormat especificado mediante la configuración local actual del sitio.

  • ParseDate — De las cadenas específicas que contienen los valores de fecha y hora a un objeto System.DateTime con la configuración regional actual del sitio.

Vea también

Conceptos

Procedimiento para configurar la referencia cultural y el idioma

Tareas de desarrollo de SharePoint: procedimiento para...

Trabajar con objetos de listas y colecciones