Sprawdzanie czasu w polskiej strefie czasowej.

0

Witam,
Potrzebuję zapisać warunek, w którym badam czy godzina jest już np. 15ta, ponieważ o tej godzinie w sieci wykonywane są pewne działania na polskiej stronie www, a dopiero po tej godzinie mam dostęp do pewnych informacji. Problem w tym, że mojego programu mogą używać osoby w innych strefach czasowy i jak np. zapiszę tj. poniżej, to przecież u nich 15ta może nie być 15tą.
W jaki sposób wymusić sprawdzanie czasu, ale w polskiej strefie czasowej?

DateTime now = DateTime.Now;
if ( now.Hour != 15 ) return State.Busy;
1

DateTime.UtcNow

Ale jak jest źle ustawiony zegar w komputerze, to co zrobisz?

1

ponieważ o tej godzinie w sieci wykonywane są pewne działania na polskiej stronie www

A nie możesz na tej stronie (oczywiście - jeśli to jest Twoja, albo masz jakiś wpływ na jej zawartość) wystawić jakiegoś checkpointa, który będzie informował klientów, czy zadany czas już minął i czy można działać? Coś na zasadzie http://strona.pl/canProceedNow, które zwróci jakiegoś JSON'a czy w inny sposób (chociażby wyplucie samego echo('TAK')) przekaże informację, że serwer jest już gotowy do działania? A potem jedynie w swojej aplikacji będziesz się w chwili, kiedy ma być wykonane jakieś zadanie, łączyć się z tą stroną i sprawdzisz, czy już można jechać dalej, czy trzeba poczekać.

To rozwiązanie ma także taki plus, że zabezpiecza przed sytuacją podaną przez @Azarien, czyli przed błędnym ustawieniem zegara w kompie. Chociaż przed tym można się zabezpieczyć także poprzez bezpośrednie pobranie czasu gdzieś z netu, z jakiegoś serwera NTP albo chociażby "zwykłego" serwera, co do którego wiesz, że ma poprawnie ustawioną godzinę.

0
boska_cebula napisał(a):

https://www.c-sharpcorner.com/blogs/get-any-date-and-time-as-per-time-zone-in-c-sharp oczywiście szukałeś

             TimeZoneInfo Central_European_Time = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");
            DateTime dateTime_CentralEuropean = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, Central_European_Time);
            Debug.WriteLine("Central_European_Time: " + dateTime_CentralEuropean);

Dziękuję kolego :)

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