2017-09-28 63 views
0

我在外地的一個在SharePoint列表保存DateTime值:日期爲1天關閉,而檢索

//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} 
     } 
    } 

日期是正確保存在SharePoint列表作爲截止日期9/30/2017

現在的問題是,當我嘗試檢索此日期值:

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

我來到這裏的輸出是從所保存的價值完全不同。我如何從SharPoint DateTime列中獲取正確的Date值?

我試了DateTime.Parse(Convert.ToString(LI[Constants.FieldName_ReqLs‌​t_DueDate])).ToLocal‌​Time()在本地機器上正常工作,但如果部署在服務器上,那麼它不起作用。

回答

0

服務器位於何處?如果服務器位於不同的時區,則會影響ToLocalTime()函數。

很多網站會將時區與用戶配置文件相關聯,然後將顯示的所有日期/時間轉換爲該配置的值。

爲SharePoint網站,你可以試試這個:

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); 
} 

然後使用你的網站就知道了時間的人總是在你設置時區。