Я использую javascript-библиотеку, которая полагается на смещение часового пояса, чтобы установить текущее время. Смещение устанавливается на сервере с помощью Java. Этот код:
Во время запуска этого кода (17:27):
package com.fmr.fc.portlet.globalclock;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.TimeZone;
public class TestDate {
public static void main(String args[]){
SimpleDateFormat df2 = new SimpleDateFormat("hh:mm a (E)");
TimeZone tz = TimeZone.getTimeZone("America/Los_Angeles");
Calendar calendar = Calendar.getInstance(tz);
df2.setTimeZone(tz);
System.out.println(df2.format(calendar.getTimeInMillis()));
System.out.println(df2.format(calendar.getTime()));
System.out.println(tz.getOffset(calendar.getTimeInMillis())/ 1000.0
/ 60.0
/ 60.0 + "");
System.out.println(tz.getRawOffset() / 1000.0
/ 60.0
/ 60.0 + "");
}
}
Выход:
09:27 AM (Wed)
09:27 AM (Wed)
-7.0
-8.0
Мне кажется, что я должен использовать исходное смещение, но метод getOffset добавляет дневное свечение к необработанному смещению для вычисления смещения, поэтому он читает -7 вместо -8.
-8 является правильным, так как я правильное время для “America/Los_Angeles” – 09:27 (ср.): -8 часов IST. Но кажется неправильным, что я также не учитываю экономию летнего времени, хотя добавление 1 к -8 является -7: что является неправильным временем?
Должен ли я использовать rawoffset для определения текущего часа? Будут ли возникать проблемы в какой-то момент времени, когда отключается летнее время?
В настоящее время я не могу использовать JodaTime в базе кода.