gpt4 book ai didi

c# - 在 DataSet.GetXml() 之后从 UTC 转换的日期时间不正确

转载 作者:太空宇宙 更新时间:2023-11-03 13:49:21 26 4
gpt4 key购买 nike

我的应用程序通过 Web 服务调用提取对象,将其放入类型化数据集中,然后将 DataSet.GetXml() 发送到存储过程以在数据库中插入/更新。

我面临的问题是对象的两个属性:StartTime/EndTime。 Web 服务以 UTC 格式发送这些信息。例如。示例 StartTime->“2012-11-06T05:00:00Z”DataSet.GetXml() 尝试将此 UTC 值转换为本地时间,而我的应用程序服务器处于美国东部时间。结果值应报告为“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()));
}
}

最佳答案

好的,我发现了为什么 UTC 时间被转换为“不正确的本地时间”。类型化数据集中的字段“Startime”/“EndTime”的类型为“DateTime”。有一个与 DateTime 类型的 DataColumn 关联的属性,称为“DateTimeMode”,默认设置为“UnspecifiedLocal”。 http://msdn.microsoft.com/en-us/library/system.data.datasetdatetime.aspx

基本上,此选项将偏移量添加到日期时间值而不对其进行转换。作为测试,我将“DateTimeMode”更改为“Utc”并重试。从 DataSet.GetXml() 收到的 XML 能够正确转换值:“2012-11-06T05:00:00Z”

作为我的问题的解决方案,我将属性保留为“UnspecifiedLocal”。相反,在将值添加到数据集时,我将其转换为本地时间。

    objOrderRow.EndTime = objOrder.EndTime.ToLocalTime();

(请注意,这对我有用,因为我的应用程序服务器和数据库服务器位于同一时区,并且转换为 UTC 并不复杂。)

关于c# - 在 DataSet.GetXml() 之后从 UTC 转换的日期时间不正确,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14157855/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com