ボタンをクリックしたときにAndroidモバイルからタイムゾーンを取得したい。
TimeZone.getDefault()
を使用しようとしましたか:
ほとんどのアプリケーションはTimeZone.getDefault()を使用します。これは、プログラムが実行されているタイムゾーンに基づいてTimeZoneを返します。
参照: http://developer.Android.com/reference/Java/util/TimeZone.html
TimeZone tz = TimeZone.getDefault();
System.out.println("TimeZone "+tz.getDisplayName(false, TimeZone.SHORT)+" Timezon id :: " +tz.getID());
出力:
TimeZone GMT + 09:30 Timezon id ::オーストラリア/ダーウィン
編集:ケースを修正しました
このコードを試してください-
Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();
ユーザーが選択したタイムゾーンを返します。
オフセットが必要でした。これは、夏時間だけでなく数値としても含まれていました。これは、誰かが例を探している場合に使用したコードです。
"3.5"(3:30 ')の応答を受け取ります。これは冬のイランのテヘランと"4.5"(4:30')で予想されるものです夏のために 。
最後の行が不要になるように、サーバーに投稿できるように、文字列としても必要でした。
正しいタイムゾーンを取得するため:
TimeZone tz = TimeZone.getDefault();
Date now = new Date();
//Import part : x.0 for double number
double offsetFromUtc = tz.getOffset(now.getTime()) / 3600000.0;
String m2tTimeZoneIs = Double.parseDouble(offsetFromUtc);
単純な日付形式を使用した最も単純なソリューション:SimpleDateFormat( "ZZZZZ"):
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"),
Locale.getDefault());
Date currentLocalTime = calendar.getTime();
DateFormat date = new SimpleDateFormat("ZZZZZ",Locale.getDefault());
String localTime = date.format(currentLocalTime);
System.out.println(localTime+ " TimeZone " );
==>出力は:+05:30
TimeZone timeZone = TimeZone.getDefault();
timeZone.getID();
次のように印刷されます
Asia/Kolkata
http://developer.Android.com/reference/Android/text/format/Time.html によれば、Time.getCurrentTimezone()を使用してデバイスの現在のタイムゾーンを取得する必要があります。
API 26以降を搭載したデバイスの場合、次のように取得できます。
ZonedDateTime.now().getZone().toString();