• home
    • news & events
    • blog
  • über uns
    • projekte und referenzen
    • partner
    • produkte & technologien
    • offene jobs / stellen
  • dienstleistungen & services
    • software design & architektur
    • software entwicklung
    • beratung / consulting
    • training, kurse und workshops
  • sharepoint 2010 workshops
    • module
    • anmeldung
  • kontakt
Wir bieten SharePoint und .NET
Kompetenz, Erfahrung und Know-How:
"1stQuad guaranteed."
Diesen Blog abonnieren
Subscribe in NewsGator Online Add to My AOL
Add to Google Reader or Homepage Add to netvibes

Aktuelle Posts

State Machine Workflow mit InfoPath Formularen für SharePoint 2010 – Teil 7
State Machine Workflow mit InfoPath Formularen für SharePoint 2010 – Teil 6
State Machine Workflow mit InfoPath Formularen für SharePoint 2010 – Teil 5
State Machine Workflow mit InfoPath Formularen für SharePoint 2010 – Teil 4
State Machine Workflow mit InfoPath Formularen für SharePoint 2010 – Teil 3

Archiv

Juli 2010 (11)
Juni 2010 (13)
Mai 2010 (11)
April 2010 (4)
März 2010 (6)
Februar 2010 (2)
Januar 2010 (6)
Dezember 2009 (4)
November 2009 (13)
Oktober 2009 (17)
September 2009 (2)
Juli 2009 (2)
März 2009 (2)
Januar 2009 (1)

Als Microsoft Certified Partner bietet 1stQuad Solutions SharePoint und .NET Kompetenz, Erfahrung und Know-How für Entwicklung, Architektur, Beratung, Schulung, Training und Kurse in Zürich, Bern, Basel, Schweiz sowie Deutschland und Östereich.
Als Spezialist für kleine und mittlere Unternehmungen (KMU) bietet 1stQuad Solutions SharePoint und .NET Produkt- und Projekt-Kompetenz, -Erfahrung und -Know-How für Entwicklung, Architektur, Beratung, Schulung, Training und Kurse in Zürich, Bern, Basel, Schweiz sowie Deutschland und Östereich.
Mit Kentico CMS bietet 1stQuad Solutions neben SharePoint und .NET CMS-Produkt- und Projekt-Kompetenz, -Erfahrung und -Know-How für Entwicklung, Architektur, Beratung, Schulung, Training und Kurse in Zürich, Bern, Basel, Schweiz sowie Deutschland und Östereich.
© 2010 1stQuad Solutions
Alle Rechte vorbehalten
> Impressum
Wir bieten Microsoft SharePoint und .NET Projekt- und Produkt-Know-how, Kompetenz und Erfahrung für Entwicklung, Architektur, Beratung, Schulung, Training und Kurse in Zürich, Bern, Basel, Schweiz sowie Deutschland und Östereich.

Blog > November 2009

Doppelte Zeitzonen-Rechnung bei DateTime Listenfeldern

Heute konnte ich ein ganz tückisches Phänomen lösen, welches mich einiges an Nerven gekostet hat. In einem Microsoft Office SharePoint 2007 Projekt mit viel Eigenentwicklung hat der Kunde festgestellt, dass einige Felder vom Typ "DateTime" in eigenen der selbst entwickelten Komponenten nicht die korrekte Zeit anzeigen. Des Rätsels Lösung liegt in den Tiefen von SPQuery...

Veröffentlicht am 25.11.2009 12:19:44 von Michael Hofer mit 0 Kommentar(en)

SharePoint und DateTime - das allein ist ja schon eine Geschichte für sich. Intern verwendet SharePoint ja UTC-Time und rechnet diese dann je nach Zeitzonen-Einstellungen der jeweiligen SharePoint Site automatisch um. Soweit so gut - aber eben, jede Automation hat so ihren Preis. Man findet auf dem Web etliche Beispiele, wo man genau mit dieser (an und für sich exzellent gemeinten und meist auch gut umgesetzten) Automation auf Probleme stösst...

Das Problem, welches ich hier lösen möchte äussert sich in dem, dass eine falsche Uhrzeit angezeigt wird - und zwar wird nachvollziehbar 2 mal die Zeitzonen-Verschieben gerechnet. In meinem Fall ist dies plus 1 Stunden (Schweiz). Die angezeigte Zeit ist aber jeweils um eine Stunde später. Ändere ich die Zeitzonen-Einstellung auf plus 2 Stunden ist die angezeigte Zeit 2 Stunden später usw.

In dem von mir untersuchten SharePoint-Projekt war die Situation folgendermassen: Datum und Zeit wurden über standard SharePoint Publishing WebControls als MetaDaten einer Veröffentlichungsseite eingegeben. Fehlerquelle: wohl kaum. In allen Listenansichten wird die Zeit korrekt ausgegeben. Nächster Test: Über das Objektmodell hole ich mir das fragliche SPListItem und prüfe das von SharePoint erstellte Objekt vom Typ DateTime (Code ist nur exemplarisch):

DateTime myTestDateTime = (DateTime)spList.Items["myTestItem"]["myTestDateTimeField"];

Komisch - auch hier absolut alles korrekt! Die Zeit stimmt, Zeitzone etc. ist ebenfalls korrekt. Und trotzdem liefert die Applikation falsche Zeiten.

Nach einer Weile habe ich dann realisiert, dass ich es hier nicht mit "normalen" SPListItems zu tun hatte: Diese SPListItemCollection ist das Resultat einer Abfrage mittels SPQuery. Nachdem ich eine ähnliche Abfrage nachgebaut hatte konnte ich tatsächlich feststellen, dass der identische Code von oben für dieselbe Seite (ich sage bewusst nicht "das identische SPListItem", den dieses ist ja nur eine Instanz von diesem Typ) nun die falsche Zeit liefert.

Des Rätsels Lösung: SPQuery hat eine Eigenschaft DatesInUTC. Diese ist standardmässig auf false und dies verursacht nachweislich das Problem...

SPQuery mySPQuery = new SPQuery();
mySPQuery.DatesInUTC = true;

... und plötzlich stimmt auch mein Test von oben mit SPListItems von einem SPQuery wieder.

Kommentar
Dieser Blog-Eintrag wurde noch nicht kommentiert.
Kommentar hinterlassen



 Security code
Zurück, Seite drucken