Mittwoch, 9. Juli 2008

Den Defaultvalue von DateTime-Feldern ändern

Prinzipiell ist es relativ einfach den Defaultvalue von SPField-Objekten zu setzen. Wunderlich wird es allerdings, wenn z.B. der Wert "07.07.2008" aus einem DateTime-Feld in ein anderes kopiert werden soll, als neuer DefaultWert aber stattdessen dann "07.07.1907" auftaucht.

Nach etwas Herumsucherei bin ich auf diesen Blogeintrag gestoßen *click* der uns verrät, dass SharePoint das "Coordinated Universal Time"-Format (UTC) bevorzugt, also Datumswerte in der Form 'yyyy-mm-ddThh:mm:ssZ'.

Das kann ganz einfach durch die Methode .ToString("u") erzielt werden, welches ein Datum in das kulturunabhängige UTC-Format umwandelt.

Der Code des konkreten Falls sieht demnach so aus:

SPFieldDateTime abgabeDatum = (SPFieldDateTime)positionList.Fields["Abgabedatum"];
abgabeDatum.DefaultValue = ((DateTime)properties.ListItem["Abgabedatum"]).ToString("u");
abgabeDatum.Update();

Kommentare:

Sebastian Gerling (Berater) hat gesagt…

...na das war ja genau das Problem, was ich mit dem Nils diskutiert hatte, schön, dass es geklappt hat *Thumbs up*

Sebastian

Nils Engel (System Administrator & Sharepoint Entwickler) hat gesagt…

Leider ist das so noch nicht ganz vollständig, denn das UTC-Format gilt nur in einer Zeitzone. Hält man sich nicht dort auf, muss vorher noch in UniversalTime konvertiert werden.

abgabeDatum.DefaultValue = ((DateTime)properties.ListItem["Abgabedatum"]).ToUniversalTime().ToString("u");

Liefert den richtigen Timestamp.

Nils