您可以通过这篇出色的文章“世界时钟和 TimeZoneInformation 类”来补充您的解决方案,我创建了一个 Web 服务,它发送了一个包含本地和接收器时间信息的文件,我所做的是修改这个类以便我可以处理这个问题它工作得非常完美,完全符合我的需要。
我认为您可以参加该课程并从“用户”表中获取他们的时区并“计算”适当的时间,我的代码是这样的;
//Get correct destination time
DateTime thedate = DateTime.Now;
string destinationtimezone = null;
//Load the time zone where the file is going
TimeZoneInformation tzi = TimeZoneInformation.FromName(this.m_destinationtimezone);
//Calculate
destinationtimezone = tzi.FromUniversalTime(thedate.ToUniversalTime()).ToString();
此类在 Windows Vista 中存在一个问题,该问题会导致“FromIndex(int index)”函数崩溃,但您可以修改代码,而不是使用该函数:
public static TimeZoneInformation FromIndex(int index)
{
TimeZoneInformation[] zones = EnumZones();
for (int i = 0; i < zones.Length; ++i)
{
if (zones[i].Index == index)
return zones[i];
}
throw new ArgumentOutOfRangeException("index", index, "Unknown time zone index");
}
您可以将其更改为;
public static TimeZoneInformation FromName(string name)
{
TimeZoneInformation[] zones = EnumZones();
foreach (TimeZoneInformation tzi in zones)
{
if (tzi.DisplayName.Equals(name))
return tzi;
}
throw new ArgumentOutOfRangeException("name", name, "Unknown time zone name");
}