【问题标题】:How to output XML without the "-05:00" UTC offset?如何在没有“-05:00”UTC 偏移的情况下输出 XML?
【发布时间】: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,他们可以从那里得到多少小时。
  • 特别是用于网络服务。

标签: .net xml utc offset


【解决方案1】:

您可以使用 DateTimeOffset 代替 DateTime 类。它提供了额外的时区信息。

【讨论】:

    猜你喜欢
    • 2020-03-15
    • 1970-01-01
    • 1970-01-01
    • 2013-07-24
    • 1970-01-01
    • 1970-01-01
    • 2020-02-09
    • 2010-11-27
    • 1970-01-01
    相关资源
    最近更新 更多