2017-09-28 21 views
0

je sauve une valeur DateTime dans l'un des champs dans la liste SharePoint:valeur de date dans SharePoint est un jour de congé lors de la récupération

//request is an entity that has all he fields in the list, I am only showing DueDate in the below code 
    if (txtdatepicker.Text != String.Empty) 
    { 
     DateTime dueDate; 
     if (DateTime.TryParse(txtdatepicker.Text, out dueDate)) 
     { 
      request.DueDate = dueDate;//Output {9/30/2017 12:00:00 AM} 
     } 
    } 

La date est correctement enregistré dans la liste SharePoint comme Due Date: 9/30/2017 .

Maintenant la question est quand je tente de récupérer cette valeur Date:

if (LI[Constants.FieldName_ReqLst_DueDate] != null) 
    req.DueDate = (DateTime)LI[Constants.FieldName_ReqLst_DueDate];//Output {9/29/2017 6:30:00 PM} 

La sortie que je reçois ici est totalement différent de celui de la valeur qui est enregistrée. Comment puis-je récupérer la valeur Date correcte à partir d'une colonne SharPoint DateTime?

J'ai essayé avec DateTime.Parse(Convert.ToString(LI[Constants.FieldName_ReqLs‌​t_DueDate])).ToLocal‌​Time() fonctionne très bien sur la machine locale, mais si elle est déployée sur le serveur, elle ne fonctionne pas.

Répondre

0

Où se trouve le serveur? Si le serveur se trouve dans un fuseau horaire différent, cela affectera la fonction ToLocalTime().

Un grand nombre de sites associeront un fuseau horaire au profil utilisateur, puis convertiront toutes les date/heure affichées en cette valeur configurée.

Pour le site Sharepoint vous pouvez essayer ceci:

if (LI[Constants.FieldName_ReqLst_DueDate] != null) 
{ 
    // create a time zone object hard coding to local time zone 
    var timeInfo = TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"); 
    var tempDate = (DateTime)LI[Constants.FieldName_ReqLst_DueDate]; 
    req.DueDate = TimeZoneInfo.ConvertTimeFromUtc(tempDate, timeInfo); 
} 

Ensuite, toute personne utilisant votre site saura le temps est toujours dans le fuseau horaire que vous définissez.