XML中的日期保存为一天延迟

时间:2016-02-04 11:02:43

标签: c# xml datetime couchbase

我正在从XML读取日期字符串,示例如下:

<fundingStart value="20/04/2013"/>

我可以从XML中正确检索它,然后在将其保存为CouchBase中的JSON格式之前将其转换为DateTime。

但是,我的问题是,当保存数据时,它会延迟一天。在XML的上述日期,它将保存为19/04/2013。

我的代码:

    if(!String.IsNullOrEmpty(source.FundingStartDate.Value))
    {
        DateTime startDate = DateTime.ParseExact(source.FundingStartDate.Value.ToString(), "d/M/yyyy", System.Globalization.CultureInfo.InvariantCulture);
        destination.Funding.Start = startDate;
    }

1 个答案:

答案 0 :(得分:1)

时区。

20/04/2013被解析为2013-04-20 00:00当地时间。与许多其他(文档)数据库一样,CouchBase在内部将日期保存为UTC。

因此,根据您的时区,将当地时间转换为UTC将产生2013-04-19 23:00,格林威治标准时间+1。

快速解决方法是在阅读日期时致电DateTime.ToLocalTime(),所以:

 destination.Funding.Start = destination.Funding.Start.ToLocalTime();

我确信CouchBase C#SDK有一些选项可以让从数据库读取的每个日期时间都发生这种情况。