2016-06-14 9 views
0

Ich verwende das Timezone-Paket, um eine SelectOption verfügbarer Zeitzonen im Browser zu erstellen. Der Benutzer kann dann auswählen, welche Zeitzone er jederzeit anzeigen lassen möchte. Ich möchte, dass die ausgewählte Option in der Liste seine lokale Zeitzone ist.Wie ist die lokale Zeitzone eines Browsers?

Die Dokumentation für das Paket zeigt an, dass die Variable 'local' die lokale Zeitzone sein sollte - jedoch immer auf UTC. Wie kann ich der lokalen Zeitzone gleichkommen?

await initializeTimeZone(); 
    print(local.name); 

https://www.dartdocs.org/documentation/timezone/0.4.3/timezone/timezone-library.html

+0

Was ist 'local'? –

Antwort

0

Ich habe mich nicht versucht, aber es sieht aus wie das intl Paket, was Sie vielleicht bieten:

import "package:intl/intl_browser.dart"; 
... 
String locale = await findSystemLocale(); 
+0

Funktioniert nicht für mich. Ich rufe 'findSystemLocale()' erwarten, aber Intl.defaultLocale bleibt Null, Aufruf von neuen DateFormat (...) dann löst Ausnahme mit der Nachricht 'LocaleDataException: Locale Daten wurde nicht initialisiert, rufen Sie initializeDateFormatting ().' – richard

+1

Rufen Sie getCurrentLocale() auf. findSystemLocale legt nur systemLocale fest, was nicht notwendigerweise dasselbe wie defaultLocale ist. Aber es wird dir nicht so viel helfen. findSystemLocale kanonisiert lediglich window.navigator.language. Es wird Ihnen ein Gebietsschema wie en_US sagen, aber das ist keine Zeitzone. Im Allgemeinen weiß der Browser, wie hoch die Ortszeit ist, aber nicht den Namen der lokalen Zeitzone. Sie können den Offset finden, indem Sie nach einer Ortszeit und einer UTC-Zeit fragen, aber das sagt Ihnen nicht, wie es heißt. –

+0

Danke, muss ein bisschen überdenken – richard