sábado, 13 de septiembre de 2014

ISO8601 en Sharepoint

Sharepoint internalmente almacena las fechas para list items como UTC dates (ISO 8601 DateTime format):

yyyy-MM-ddTHH:mm:ssZ
De esta manera podriamos hacer nuestras consultas CAML:

<Where>
  <Gt>
    <FieldRef Name='Created' />
    <Value Type='DateTime' IncludeTimeValue='TRUE' StorageTZ='TRUE'>
      2014-09-13T13:30:26Z
    </Value>
  </Gt>
</Where>

Cómo podemos convertir las variables de DateTime en este formato?
En Server Object Model podemos usar el método: SPUtility.CreateISO8601DateTimeFromSystemDateTime(date)
En Cliente Object podemos usar el método ToString("yyyy-MM-ddTHH:mm:ssZ")
Por ejemplo: DateTime.Today.ToString("yyyy-MM-ddTHH:mm:ssZ");
En Javascript podemos usar el siguiente método:

var isoDate = function( d ) {
    //defaults to new date
    d = d || new Date();


    function pad( n ) {
        return n < 10 ? '0' + n : n;
    }


    return d.getUTCFullYear() + '-' +
        pad( d.getUTCMonth() +1 ) + '-' +
        pad( d.getUTCDate() ) + 'T' +
        pad( d.getUTCHours() ) +':' +
        pad( d.getUTCMinutes() )+':' +
        pad( d.getUTCSeconds() )+'Z'
    ;
};

No hay comentarios:

Publicar un comentario