私のアプリは、Web サービス呼び出しを介してオブジェクトを取得し、それを型指定されたデータセットに入れDataSet.GetXml()
、データベースでの挿入/更新のためにストアド プロシージャに送信します。
私が直面している問題は、オブジェクトの 2 つのプロパティにあります: 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()));
}
}