我的应用程序通过 Web 服务调用拉取一个对象,将其放入一个类型化的数据集中,然后将其发送DataSet.GetXml()
到一个存储过程以在数据库上插入/更新。
我面临的问题是对象的两个属性:StartTime
/ EndTime
。Web 服务以 UTC 格式发送这些信息。例如。示例StartTime
-> "2012-11-06T05:00:00Z"DataSet.GetXml()
尝试将此 UTC 值转换为本地时间,并且我的应用服务器位于 EST。结果值应报告为“2012-11-06T00:00:00-05:00”,但它是“2012-11-06T05:00:00-05:00”。正在添加偏移值,但时间分量未更改。
我的理解有什么不对吗?我发现很难消化该GetXml()
方法可能存在这样的错误,而且我还没有发现这里的其他人抱怨类似的问题。
这是代码的精简版本:
public void SaveOrder(int intOrderID)
{
OrderDataSet objOrderDS = null;
OrderDataSet.OrdersRow objOrderRow = null;
ExternHandler handler = null;
Order objOrder;
Order objOrder = handler.GetOrder(intOrderID);
objOrderRow = objOrderDS.Orders.NewOrdersRow();
objOrderRow.OrderID = objOrder.OrderID;
objOrderRow.StartTime = objOrder.StartTime;
objOrderRow.EndTime = objOrder.EndTime;
objOrderDS.Orders.AddOrdersRow(objOrderRow);
if (objOrderDS.Orders.Rows.Count > 0)
{
objOrderDS.Namespace = string.Empty;
objMappingObjects.Add(new MappingObject("Table", "Orders"));
objSqlParams.Add(new SqlParameter("@pOrdersXml", objOrderDS.GetXml()));
objOrderDS.Clear();
objOrderDS.Merge(SqlHelper.ExecuteDataset(ConfigConnectionDB.Trim(), CommandType.StoredProcedure, "usp_InsertOrderMetaData", objMappingObjects.ToArray(), objSqlParams.ToArray()));
}
}