Вы можете дополнить свое решение этой превосходной статьей « Мировое время и класс TimeZoneInformation », я сделал веб-сервис, который отправил файл с информацией, включающей местное время и время получателя, что я и сделал для измените этот класс, чтобы я мог справиться с этой проблемой, и он работал идеально, именно так, как мне было нужно.
Я думаю, вы могли бы взять этот класс и получить из таблицы «Пользователи» часовой пояс их и «рассчитать» подходящее время, мой код выглядел следующим образом;
//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");
}