【发布时间】:2011-03-31 20:41:42
【问题描述】:
我们有一个 VB.Net 2008 控制台应用程序,它的 Module1.vb 从我们的 SQL Server 数据库执行一些查询,并将它们作为 XML 输出以发送给我们的客户。
问题在于,仅包含时间(例如,1900-01-01 21:26:03.000)的 DateTime 元素正在输出到 XML 中,并附加了“-06:00”的 UTC(通用时间)偏移量,例如,13:56:55.0000000-06:00
当我们的客户在东部时区访问时,这会转换为一小时后,因此他们请求的时间值是 13:56:55.0000000,没有 -06.00。
有人知道怎么做吗?
详情:
VS 解决方案有一个网络参考,我称之为 WS。 Module1.vb 查询数据库,比方说 tblStats 表,并通过 DataReader 中的数据读取。对于每一行,它都会:
Dim MyWS As New WS.tblSTATS_TYPE_V1 'which is a complexType in the wsdl
MyWS.Start_Time = CheckTime(MyDataReader("START_TIME"))
...CheckTime 所在的位置:
Private Function CheckTime(ByVal Value As Object) As DateTime
If (IsNothing(Value) = True) Then Return New DateTime(0)
If (IsDBNull(Value) = True) Then Return New DateTime(0)
If (IsDate(Value) = False) Then Return New DateTime(0)
Return New DateTime(CDate(Value).TimeOfDay.Ticks, DateTimeKind.Unspecified)
End Function
...但是我添加的 DateTimeKind.Unspecified 没有效果。
任何人都可以提供的方向将不胜感激 - 谢谢!
【问题讨论】:
-
为什么不将时间转换为 UTC 并确保其安全?这样,没有人必须猜测数据来自哪个时区。如果他们想-6,-8,他们可以从那里得到多少小时。
-
特别是用于网络服务。