Как преобразовать DateTime в определенный часовой пояс?

Мне трудно понять, как работает UTC.

Я должен сделать следующее, но я все еще не уверен, получу ли я правильный результат.

Цели:

  1. Убедитесь, что все сохраненные даты в базе данных находятся в формате UTC
  2. Обновление DefaultTimezone в манильском времени
  3. Убедитесь, что все возвращаемые даты указаны в манильском времени

Таким образом, код:

public ConvertDate(DateTime? dateTime)
{
    if (dateTime != null)
    {
        Value = (DateTime)dateTime;
        TimeZone = GetFromConfig.DefaultTimeZone(); 
    }
}


public ConvertDate(DateTime? dateTime, int GMTTimeZone)
{
    if (dateTime != null)
    {
        Value = (DateTime)dateTime;
        TimeZone = GMTTimeZone;
    }
}


public int TimeZone
{
    get { return m_TimeZone; }
    set { m_TimeZone = value; }
}


DateTime m_Value;
public DateTime Value
{
    get { return m_Value; }
    set 
    { 
        m_Value = value;
        DateTime converted = m_Value.ToUniversalTime().ToLocalTime();
    }
}

Пример использования:

DateTime SampleInputFromUser = new DateTime(2012, 1, 22);
ConvertDate newConversion = new ConvertDate(SampleInputFromUser, 21);
DateTime answer = newConversion.Value;

Теперь меня смущает «TimeZone». Я не знаю, как использовать его для достижения целей.
Надеюсь, вы поняли мой вопрос и у вас есть идея для достижения целей.

Изменить

В соответствии с ответом @raveturned я получаю следующий код:

***Добавлено в метод ConvertDate

TimeZoneInfo timeInfo = TimeZoneInfo.FindSystemTimeZoneById(GetFromConfig.ManilaTimeZoneKey());
ManilaTime = TimeZoneInfo.ConvertTime(dateTime.Value, TimeZoneInfo.Local, timeInfo).ToUniversalTime();

**Новое свойство

DateTime _ManilaTime;
public DateTime ManilaTime
{
    get { return _ManilaTime; }
    set { _ManilaTime = value; }
}
30
задан fiberOptics 26 March 2012 в 09:27
поделиться