NY(US/Eastern) と UTC の間の現在のオフセットを取得しようとしています。サーバーのタイムゾーンなどに関係なく、この値を取得するにはどうすればよいですか。ミリ秒単位のオフセットが必要です。これを行う簡単な方法があると確信していますが、見つけられませんでした。
前もって感謝します!
注: これはテストされていません。
使用:
//Get NY time zone instance
TimeZone ny_tz = TimeZone.getTimeZone("America/New_York");
//Get NY calendar object with current date/time
Calendar ny_cal = Calendar.getInstance(ny_tz);
//Get offset from UTC, accounting for DST
int ny_offset_ms = ny_cal.get(Calendar.ZONE_OFFSET) + ny_cal.get(Calendar.DST_OFFSET);
次のように取得できます。
森林:
TimeZone est = TimeZone.getTimeZone("America/New_York");
System.out.println("Offset ="+est.getRawOffset());
PST の場合:
TimeZone pst = TimeZone.getTimeZone("America/Los_Angeles");
System.out.println("Offset ="+pst.getRawOffset());
getOffset() 関数を使用して、一方のタイムゾーンと GMT のオフセットを取得し、次に他方と GMT のオフセットを取得してから、それらを減算すれば準備完了です。ただし、これは現在の日付に依存すると誰かが言ったので注意してください! 毎日、数時間、2 つのタイム ゾーンが異なる日付にあるため、これは些細なことではありません。たとえば、2 つのタイム ゾーンが異なる DST ゾーンにある場合 (たとえば、DST の変更時間)、誤った表示につながる可能性がある場合、これは重要です。
getRawOffset() 関数を使用して、任意の 2 つのタイムゾーン間のオフセットを取得できます...ただし、オフセットは UTC と指定されたタイムゾーンの差になるということを 1 つ理解する必要があります.サーバーがカナダにある場合、オフセットはカナダとユーザーのタイムゾーンのタイムゾーンの違いによって決定する必要があります..
int offset = TimeZone.getTimeZone ('Asia/calcutta').getRawOffset() - TimeZone.getDefault().getRawOffset();
ここで、「TimeZone.getDefault()」はサーバーのタイムゾーン、つまりカナダです...必要なオフセットを取得するには、これを減算する必要があります。