[SharePoint] La clase SPUtility y su manera extraña de convertir un DateTime al formato ISO8601 ¿Opiniones?

Sí trabajas habitualmente con SharePoint, sabrás que las fechas con las que trabaja SharePoint están en formato ISO8601 algo como esto:

yyyy-MM-ddTHH:mm:ssZ

Seguro que en alguna CAML Query has tenido que utilizarlo:

<Query>

    <Where>

        <Eq>

            <FieldRef Name="Created" />

            <Value IncludeTimeValue="TRUE" Type="DateTime">2012-03-02T13:46:06Z</Value>

        </Eq>

    </Where>

</Query>

Pues dentro de la clase SPUtility tenemos la siguiente función CreateISO8601DateTimeFromSystemDateTime( DateTime dtValue ) que convierte un DateTime al formato ISO8601.

public static string CreateISO8601DateTimeFromSystemDateTime(DateTime dtValue)

{

  StringBuilder stringBuilder = new StringBuilder();

  stringBuilder.Append(dtValue.Year.ToString("0000"));

  stringBuilder.Append("-");

  stringBuilder.Append(dtValue.Month.ToString("00"));

  stringBuilder.Append("-");

  stringBuilder.Append(dtValue.Day.ToString("00"));

  stringBuilder.Append("T");

  stringBuilder.Append(dtValue.Hour.ToString("00"));

  stringBuilder.Append(":");

  stringBuilder.Append(dtValue.Minute.ToString("00"));

  stringBuilder.Append(":");

  stringBuilder.Append(dtValue.Second.ToString("00"));

  stringBuilder.Append("Z");

  return ((object) stringBuilder).ToString();

}

Viendo el código de la función me pregunto sino es más sencillo y más óptimo usar ToString, lo digo por el boxing explícito que es redundante en c# y además porque devuelve un string la función:

dtValue.ToString("yyyy-MM-ddTHH:mm:ssZ")

Me gustaría saber vuestra opinión.

Un saludo.

2 comentarios en “[SharePoint] La clase SPUtility y su manera extraña de convertir un DateTime al formato ISO8601 ¿Opiniones?”

  1. Hola Luis:
    No utilizo sharepoint y por ende tampoco este método, pero lo cierto es que de un simple ToString con formato a la super-función que has puesto… no sé… o hay truco o yo veo que está muy claro que gana tu ToString.
    Un saludo.

  2. Luis, yo sin duda prefiero ToString(“yyyy-MM-ddTHH:mm:ssZ”), más corto y más claro.

    Habría que hacer pruebas de rendimiento de ambas formas, para asegurarse, pero sin duda creo que mejor ToString(“yyyy-MM-ddTHH:mm:ssZ”).

    Saludos

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *