Trudno jest zrozumieć, jak działa UTC.Jak przekonwertować DateTime w określonej strefie czasowej?
Muszę wykonać następujące czynności, ale nadal jestem zdezorientowany, jeśli uzyskam właściwy wynik.
Cele:
- zapewnienia, że wszystkie zapisane terminy w bazie są w formacie UTC
- Aktualizacja DefaultTimezone jest w czasie Manila
- zapewnić wszystkich zwrócone terminy są w Czasie Manila
Tak kod:
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();
}
}
Przykład użycia:
DateTime SampleInputFromUser = new DateTime(2012, 1, 22);
ConvertDate newConversion = new ConvertDate(SampleInputFromUser, 21);
DateTime answer = newConversion.Value;
Teraz jestem zdezorientowany z powodu "strefy czasowej". Nie wiem, jak go użyć, aby osiągnąć cele.
Mam nadzieję, że rozumiesz moje pytanie i mam pomysł, aby osiągnąć założone cele.
Edit
Według odpowiedź @raveturned, otrzymuję ten poniższy kod:
*** Dodane w metodzie ConvertDate
TimeZoneInfo timeInfo = TimeZoneInfo.FindSystemTimeZoneById(GetFromConfig.ManilaTimeZoneKey());
ManilaTime = TimeZoneInfo.ConvertTime(dateTime.Value, TimeZoneInfo.Local, timeInfo).ToUniversalTime();
** New Property
DateTime _ManilaTime;
public DateTime ManilaTime
{
get { return _ManilaTime; }
set { _ManilaTime = value; }
}
Możliwy duplikat http://stackoverflow.com/questions/246498/creating-a-datetime-in-a-specific-time-zone-in-c-sharp-fx-3-5 – Dotnet