服务客户端日期时间时区偏移兼容性问题
我正在尝试使用 Visual Studio 服务引用(System.ServiceModel 命名空间类)通过 .NET 应用程序与 Java Web 服务进行通信。我发现每当它序列化 DateTime 值时,它都不会指定偏移量。问题有两个:
- 我不知道如何创建具有特定时区的 DateTime 对象。我可以创建一个 DateTimeOffset 来完成此操作,但服务客户端需要一个 DateTime 对象。
- 当 DateTime 对象被序列化时,它不包括时区偏移量。
为了详细说明问题 #2,服务期望时间戳对象的 XML 如下:
<startDate>2011-03-18T00:00:00-07:00</startDate>
<endDate>2011-03-19T00:00:00-07:00</endDate>
但是,我在跟踪 .NET 应用程序时看到的 XML 如下:
<startDate>2011-03-18T00:00:00</startDate>
<endDate>2011-03-19T00:00:00</endDate>
Web 服务需要时区,因为底层数据追踪时间为 GMT-0。返回的数据以每日为间隔,因此如果我不指定时区,则会获取 GMT-0 的数据。只有当我在查询中提供偏移量时,我才能获得数据中的正确时区。
I'm attempting to communicate with a Java webservice via a .NET application, using a Visual Studio Service reference (System.ServiceModel namespace classes). I've found that whenever it serializes a DateTime value it does not specify the offset. The problem is two fold:
- I can't figure out how to create a DateTime object with a specific time zone. I can create a DateTimeOffset that will accomplish this, but the service client is expecting a DateTime object.
- When the DateTime object is serialized, it does not include the time zone offset.
To elaborate on issue #2, the XML that the service expects for the timestamp object is as follows:
<startDate>2011-03-18T00:00:00-07:00</startDate>
<endDate>2011-03-19T00:00:00-07:00</endDate>
However, the XML that I see when tracing the .NET app is as follows:
<startDate>2011-03-18T00:00:00</startDate>
<endDate>2011-03-19T00:00:00</endDate>
The web service requires the time zone, because the underlying data is tracked in GMT-0. The data that is returned is in daily intervals, so if I don't specify a time zone then I get data back for GMT-0. Only when I provide the offset in the query do I get the in the data correct time zone.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
建议:将所有 DateTimeOffset 值转换为 UTC 格式的 DateTime 值并将其提交到 Web 应用程序。
从这个页面:通用转换方法
希望这有帮助。
Suggestion: convert all your DateTimeOffset values to DateTime values in UTC and submit them to the webapp.
From this page: A General-Purpose Conversion Method
Hope This Helps.