Uzyskaj informacje o strefie czasowej w VBA (Excel)
Chciałbym określić czas przesunięcia do GMT/UTC (w tym czas letni) dla różnych krajów na określoną datę w VBA. Jakieś pomysły?
Edytuj (od siebie, odpowiedź):
Dzięki 0xA3. Szybko ponownie przeczytałem linkowaną stronę. Wydaje mi się, że możesz uzyskać przesunięcie tylko przed GMT dla lokalnego, w którym działa Windows:
ConvertLocalToGMT
DaylightTime
GetLocalTimeFromGMT
LocalOffsetFromGMT
SystemTimeToVBTime
LocalOffsetFromGMT
W Javie możesz wykonać następujące czynności:
TimeZone bucharestTimeZone = TimeZone.getTimeZone("Europe/Bucharest");
bucharestTimeZone.getOffset(new Date().getTime());Calendar nowInBucharest = Calendar.getInstance(TimeZone.getTimeZone("Europe/Bucharest"));
nowInBucharest.setTime(new Date());
System.out.println("Bucharest: " + nowInBucharest.get(Calendar.HOUR) + ":" + nowInBucharest.get(Calendar.MINUTE));
Oznacza to, że mogę uzyskać przesunięcie dla różnych krajów (stref czasowych), a tym samym mogę również uzyskać faktyczny czas, powiedzmy, w Bukareszcie. Czy mogę to zrobić w VBA?
Nie znaleziono powiązanych wyników
Zaproszony:
Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się
7 odpowiedzi
Anonimowy użytkownik
Potwierdzenie od:
strefy czasowe & amp; czas letni
http://www.cpearson.com/excel/ ... .aspx
Edytuj: Dodano kod
Ze względu na potomność dodałem cały kod ze strony Guru Chip, którego można używać w 32-bitowym Office VBA. (modyfikacja 64-bit
tutaj
https://stackoverflow.com/a/20489651/8112776
)
Anonimowy użytkownik
Potwierdzenie od:
Wywołanie GetTimeZoneInformation () zwraca informacje o czasie letnim
Obecny czas
Ale transformowana data może być z okresu z innym ustawieniem DST - więc konwersja daty styczeń w sierpniu zastosuje obecne przesunięcie, dając w ten sposób datę GMT przez 1 godzinę mniejszą niż prawidłowa (systemtimetotzpecificlocaltime
,
wydaje się lepiej pasować - jeszcze nie testowane)
To samo dotyczy dnia z innego roku - gdy reguły DST mogłyby być inne.
GetTimeZoneInformationForYear
Musi obsługiwać zmiany w różnych latach. Umieściłem tutaj przykładowy kod, jak tylko skończę.
Wydaje się również, że system Windows nie zapewnia niezawodnego sposobu na uzyskanie 3-literowego skrótu strefy czasowej (Excel 2013 obsługuje zzz w formacie () - nie testowano).
Edit 16.04.2015
: Usunięto IntArrayToString (), ponieważ jest już obecny w modWorksheetFunctions.bas, do którego odwołują się poniższe artykuły na cpearson.com.
Dodawanie kodu do konwersji za pomocą strefy czasu, aktywne w momencie konwersji daty (ten problem nie jest wyświetlany na CPearson.com). Przetwarzanie błędów nie jest uwzględniane dla zwięzłości.
Istnieją 2 sposoby osiągnięcia nastawienia:
UWAGA: Z jakiegoś powodu wartość wypełniona w LPTZI tutaj nie zawiera informacji o roku, więc musisz ustawić rok w LPTZI.DEACTIONDATE i LPTZI.Standarddate.
Anonimowy użytkownik
Potwierdzenie od:
Poniższy kod pochodzi z
http://www.cpearson.com/excel/ ... .aspx
http://www.cpearson.com/excel/ ... .aspx
Anonimowy użytkownik
Potwierdzenie od:
ConvertTime
:
https://msdn.microsoft.com/vba ... look.
https://msdn.microsoft.com/VBA ... tlook
Super Easy, Super Zapisz i zaledwie kilka linii kodu
Ten przykład konwertuje wprowadzenie z UTC do CET:
Jako strefa czasowa źródła/miejsca docelowego możesz użyć wszystkich stref czasowych, które można znaleźć
w swoim rejestrze pod:
HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Time Zones/
PS: Jeśli często musisz użyć tej metody, zalecam zadeklarować obiekt programu Outlook na zewnątrz sub/funkcji. Utwórz go raz i zapisz go przy życiu.
Anonimowy użytkownik
Potwierdzenie od:
Anonimowy użytkownik
Potwierdzenie od:
Niektóre kontrole błędów i kilka dodatkowych testów. :-)
Anonimowy użytkownik
Potwierdzenie od:
Główna funkcja mojego projektu
VBA.Timezone-Windows
https://github.com/GustavBrock ... ndows
Leży poniżej:
<pre class="lang-vb prettyprint-override">
Projekt wspierają dwa artykuły:
Strefy czasowe, okna i VBA część 1
https://www.experts-exchange.c ... .html
Strefy czasowe, Windows i Microsoft Office Part 2
https://www.experts-exchange.c ... .html
W tym wersje demonstracyjne do dostępu i programu Excel.
https://i.stack.imgur.com/0sy5Q.png