代码之家  ›  专栏  ›  技术社区  ›  Matthew

XML日期时间序列化中时区信息的控制

  •  0
  • Matthew  · 技术社区  · 6 年前

    我使用的是一个有时间字段的xmlapi。在C#中,使用以下属性设置时间:

    [System.Xml.Serialization.XmlElementAttribute(DataType = "time")]
    public System.DateTime TimeOfDay
    {
        get
        {
            return this.timeOfDayField;
        }
        set
        {
            this.timeOfDayField = value;
        }
    }
    

    问题是如果我

    TimeOfDay=new DateTime(2018, 1, 1, 14, 0, 0);
    

    它序列化为

    <TimeOfDay>14:00:00.0000000-05:00</TimeOfDay>
    

    但当我通过API发送它时,它会在另一端将其转换为

    <TimeOfDay>19:00:00.0000000+00:00</TimeOfDay>
    

    但我要说的是

    <TimeOfDay>14:00:00.0000000+00:00</TimeOfDay>
    

    我试过了 DateTime.SpecifyKind 但没有效果。打电话 .ToUniversalTime() 导致 <TimeOfDay>19:00:00.0000000-05:00</TimeOfDay> 在我这边,当我通过API运行它时,它又增加了5个小时 <TimeOfDay>00:00:00.0000000+00:00</TimeOfDay>

    <TimeOfDay>14:00:00.0000000+00:00</TimeOfDay> +00 时区

    0 回复  |  直到 6 年前