SharePoint中的日期值在检索时休息一天

时间:2017-09-28 14:36:39

标签: c# datetime sharepoint-2013 csom

我在SharePoint列表的某个字段中保存了DateTime值:

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

现在问题是当我尝试检索此Date值时:

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()在本地计算机上运行正常,但如果在服务器上部署,那么它就无法正常工作。

3 个答案:

答案 0 :(得分:1)

尝试将日期转换为本地时间格式,如下所示

var PaymentDate = Convert.ToDateTime(item["PaymentDate"].ToString()).ToLocalTime();

答案 1 :(得分:0)

服务器在哪里?如果服务器位于不同的时区,则会影响import Data.Aeson (decode) import Data.String (fromString) import Data.List (transpose) parseFloats :: String -> Maybe [[Float]] parseFloats = fmap transpose . decode . fromString 功能。

许多网站会将时区与用户个人资料相关联,然后将显示的所有日期/时间转换为该配置的值。

对于Sharepoint网站,您可以尝试:

ToLocalTime()

然后,任何使用您网站的人都会知道时间总是在您设置的时区内。

答案 2 :(得分:0)

  1. 使用String.IsNullOrEmpty(myVar);
  2. 检查字符串
  3. 我建议将日期时间值存储为UTC。在这种情况下,它不受时区限制,因此您将来可以避免冬季/夏季时移问题。
  4. 从数据库中检索日期时间时,调用ToLocalTime()会根据您的服务器时区设置来设置时间。