我正在从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;
}
答案 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有一些选项可以让从数据库读取的每个日期时间都发生这种情况。