只要您的 Web 服务层和客户端层使用 .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>