XmlSerializer продолжает сериализовать дату и время в летнее время (+2) вместо зимнего времени), если XmlModel имеет свойство с XmlAttrib с конфигурацией «DateType=Time».
Указана дата: 03.07.2024, это должно быть зимнее время (+1)
См. код.
Мой вопрос: есть ли какой-либо способ указать зимнее время в XMLModel или для даты и времени?
Часовой пояс: Брюссель
Код:
string xmlString = "";
// simulate the mapping from front end to the request
var periodModel = new VsbPeriodModel();
var time = new TimeSpan(19, 0, 0);
var date = new DateTime(2024, 03, 07);
var dateWithTimezone = DateTime.SpecifyKind(date.Date.Add(time), DateTimeKind.Local);
periodModel.EndDate = date;
periodModel.EndTime = dateWithTimezone;
using(var ms = new MemoryStream())
{
var serializer = new XmlSerializer(typeof(VsbPeriodModel));
serializer.Serialize(ms, periodModel);
var bytes = ms.ToArray();
xmlString = System.Text.Encoding.UTF8.GetString(bytes);
}
Assert.NotNull(xmlString);
xmlString.Should().BeEquivalentTo("?");
Модель XML:
[System.Xml.Serialization.XmlRootAttribute(Namespace = "", IsNullable = false)]
public class VsbPeriodModel
{
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, DataType = "date")]
public DateTime EndDate { get; set; }
[System.Xml.Serialization.XmlElementAttribute(Form = System.Xml.Schema.XmlSchemaForm.Unqualified, DataType = "time")]
public DateTime EndTime { get; set; }
}
Результат (часть):
19:00:00.0000000+02:00
Ожидаемый результат:
19:00:00.0000000+01:00
Подробнее здесь: https://stackoverflow.com/questions/785 ... ime-if-the