Problema:
  Se da codice imposto una proprietà di tipo data+ora di un documento contenuto in una Document Library di SharePoint mi ritrovo un valore diverso da quallo impostato. In particolare ho uno sfasamento di un'ora o due.
   
  Soluzione:
  Certo, direte voi, devi usare le date in formato UTC.
  Allora vediamo coda succede in 2 casi, cioè se il file esiste e modifico la sua proprietà, oppure se il file è creato nuovo e la proprietà assegnata all'upload.
  L'esempio suppone che:
     - ci sia un documento all'url http://myServer/mySite/myDocLib 
- la document library che contiene quel documento abbia una proprietà di nome myDateTimeProp 
Il codice di esempio (inserito in un qualche button click) esegue l'update della proprietà del documento esistente, poi crea un nuovo documento (con il contenuto del precedente) assegnandogli un certo valore della proprietà di tipo Data.
  Si noti che nel primo caso (update) si deve usare la data nel suo formato normale, nel secondo la si deve convertire in formato UTC.
  Ogni altra combinazione non sembra funzionare.
   
      
        1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        2     ' Esegue l'update della data:
        3     Dim urlDoc As String = "http://myServer/mySite/myDocLib/myDoc1.tif"
        4     Dim objSite As SPSite = Nothing
        5     Dim objWeb As SPWeb = Nothing
        6     Try
        7       Me.Cursor = Cursors.WaitCursor
        8       ' Crea gli oggetti SPSite ed SPWeb 
        9       objSite = New SPSite(urlDoc)
       10       objWeb = objSite.OpenWeb
       11       '' Cerca la document library
       12       Dim objItem As SPListItem = objWeb.GetListItem(urlDoc)
       13       objItem.Item("myDateTimeProp") = Now
       14       objItem.Update()
       15       Dim stream As IO.Stream = objItem.File.OpenBinaryStream()
       16       Dim props As New Hashtable
       17       props.Add("myDateTimeProp", Now.ToUniversalTime)
       18       objItem.File.ParentFolder.Files.Add("myDoc2.tif", stream, props)
       19       stream.Dispose()
       20     Catch ex As Exception
       21       MessageBox.Show(ex.ToString)
       22     Finally
       23       If Not objSite Is Nothing Then objSite.Dispose()
       24       If Not objWeb Is Nothing Then objWeb.Dispose()
       25       Me.Cursor = Cursors.Default
       26     End Try
       27   End Sub
    
     
    Considerazioni finali
    Si tratta di una mia personalissima ipotesi, ma secondo me i team di sviluppo della funzionalità di update e di quella di addnew sono distinti, separati e non comunicanti.