Как управлять информацией о часовом поясе в сериализации XML DateTime - PullRequest
0 голосов
/ 29 ноября 2018

Я использую API-интерфейс XML с полем времени.В 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, он добавляет еще пять часов, чтобы стать <TimeOfDay>00:00:00.0000000+00:00</TimeOfDay>

Как я могу установить это время так, чтобы результат на другомконец <TimeOfDay>14:00:00.0000000+00:00</TimeOfDay>.Я не думаю, что простое вычитание 5 часов - хорошая идея, потому что оно не учитывает переход на летнее время.Я не контролирую сам API - мне нужен код на C #, который заставляет его сериализоваться в +00 timezone

...