DateTime EST do czasu lokalnego

0

Cześć

Piszę moje pierwsze programy w C# i natrafiłem na problem związany z konwertowaniem czasu.
Kolejno:

Deklaracja time

 
String time = "2012-08-22 2:00 PM";

Czas time jaki pobieram do stringa jest zawsze w timezone:

 
Eastern Standard Time(EST)           (GMT-05:00) Eastern Time (US/Canada)

Zatem dopisuje do końca stringa -05 żeby poinformować DateTime o strefie czasowej:

 
String time = "2012-08-22 2:00 PM -05";

Tworzę obiekt:

 
  DateTime dt = DateTime.ParseExact(time, "yyyy-MM-dd h:mm tt z", CultureInfo.InvariantCulture);
// dt.Kind jest Local

Teraz nie wiem ;-/ jak skonwertować ten obiekt do czasu w jakim aktualnie pracuje dany system tzn w Wawa(+01) time= "2012-08-22 20:00", w Bangkoku(+07) time = 2012-08-23 03:00" itd

Proszę o jakieś wskazówki...

dzięki

0

DateTime domyślnie przechowuje właśnie czas w strefie czasowej, w której domyślnie skonfigurowany jest profil. Więc w Polsce, twoje dt będzie już czasem warszawskim.

Możesz też samemu dokonać konwersji:

DateTime warsawDt = TimeZoneInfo.ConvertTime(dt, TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time"));
DateTime bangkokDt = TimeZoneInfo.ConvertTime(dt, TimeZoneInfo.FindSystemTimeZoneById("SE Asia Standard Time"));

Więcej info otrzymasz na MSDN po wpisaniu TimeZoneInfo w wyszukiwarkę.

0

Pogubiłem się totalnie:


var  dt = DateTime.ParseExact("2012-08-22 2:00 PM -5", "yyyy-MM-dd h:mm tt z", CultureInfo.InvariantCulture);
richTextBox1.Text = dt.ToString();
 

oraz twój kod

 dt = TimeZoneInfo.ConvertTime(dt, TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time"));
 

wyświetla 2012-08-22 2100 a powinien 2012-08-22 2000, różnica wynosi 6 godzin...

Cały czas w sumie otrzymuje +/- godzina... nie wiem ;/

0

Obecnie w Polsce obowiązuje CEST (UTC +2) ze względu na czas letni.

0

łoo matko, kompletnie mi to nie przyszło do głowy ;-(

Zatem porwany kod to:

 
  DateTime dt = new DateTime();
           dt = DateTime.ParseExact("2012-12-22 2:00 PM -5", "yyyy-MM-dd h:mm tt z", CultureInfo.InvariantCulture);
            if (dt.IsDaylightSavingTime() == true)
            {
               dt =  dt.AddHours(-1);
            }
       

1 użytkowników online, w tym zalogowanych: 0, gości: 1