如何在XML DateTime序列化中控制时区信息

时间:2018-11-29 18:29:51

标签: c# xml xsd xml-serialization

我正在使用具有时间字段的XML API。在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>。我不认为仅减去5小时是一个好主意,因为它不考虑夏时制。我无法控制API本身-我需要强制将其序列化为+00时区的C#代码

0 个答案:

没有答案