Пока ваш слой веб-сервисов и уровень клиента используют тип .NET DateTime, он должен сериализоваться и десериализоваться должным образом как стандартная локальная дата / время SOAP с информацией о часовом поясе, такой как:
2008-09-15T13: 14: 36.9502109-05: 00
Если вы абсолютно определенно должны знать сам часовой пояс (т. Е. Выше может быть восточное стандартное время или центральное летнее время), вам необходимо создать свой собственный тип данных, который отображает эти фрагменты как таковые:
[Serializable]
public sealed class MyDateTime
{
public MyDateTime()
{
this.Now = DateTime.Now;
this.IsDaylightSavingTime = this.Now.IsDaylightSavingTime();
this.TimeZone = this.IsDaylightSavingTime
? System.TimeZone.CurrentTimeZone.DaylightName
: System.TimeZone.CurrentTimeZone.StandardName;
}
public DateTime Now
{
get;
set;
}
public string TimeZone
{
get;
set;
}
public bool IsDaylightSavingTime
{
get;
set;
}
}
тогда ваш ответ будет выглядеть так:
<Now>2008-09-15T13:34:08.0039447-05:00</Now>
<TimeZone>Central Daylight Time</TimeZone>
<IsDaylightSavingTime>true</IsDaylightSavingTime>