2013-05-31 1 views
1

При запуске ниже линии TimeZone.getDefault(),выход метода

System.out.println(java.util.TimeZone.getDefault()); 

я получил следующий вывод.

sun.util.calendar.ZoneInfo[id="Asia/Calcutta", 
    offset=19800000, 
    dstSavings=0, 
    useDaylight=false, 
    transitions=6, 
    lastRule=null] 

и

System.out.println(Locale.getDefault()); дает

`en_US` 

Мои сомнения

Как мог Locale быть en_US, Когда мой Zone id является Asia/Calcutta?

в первый выход, я не понял, что это offset, dstSavings, useDaylight, transitions and rules ?

Может кто-нибудь помочь в понимании их.

Заранее спасибо ...

ответ

2

Locale не имеет ничего общего с TimeZone, вы можете настроить свой компьютер на французском языке в Австралии, если вы хотите ... вы не будете нуждаться Франция TimeZone для этого.

Чтобы узнать больше о TimeZone, вы должны прочитать тезисы:

useDaylightTime

public abstract boolean useDaylightTime() 

Запросы, если этот часовой пояс использует летнее время.

Что такое Daylight Saving Time.

getDSTSavings

public int getDSTSavings() 

Возвращает количество времени, которое нужно добавить к локальному стандартному времени, чтобы получить местное время настенных часов.

Так что это разница между UTC + TimeZone + (DSTSavings - 0 или 1 час). Если вы сейчас находитесь в режиме экономии DST, он вернется на 1 час.

правила

Правила означает дату, когда DST не активен, и дата, когда она больше не будет. Больше информации SimpleTimeZone.

переходы

Этот массив описывает переходы GMT смещений этой временной зоны, в том числе как сырые изменения смещения и экономии дневного времени изменяется. Длинное целое состоит из четырех битовых полей.

Наиболее значимое 52-битовое поле представляет собой время перехода в миллисекунд от григорианского 1 января 1970 года, 00:00:00 GMT. Следующее 4-битовое поле зарезервировано и должно быть 0. Следующее 4-битовое поле является значением индекса для смещений [] для количества летнего времени при переходе. Если это значение равно нулю, это означает, что значение не имеет дневного света, а не значение индекса. Наименее значимое 4-битовое поле является значением индекса для смещений [] для общего смещения GMT при переходе.

Если этот часовой пояс не учитывает переход на летнее время и никогда не использовал , то это изменение равно нулю.

+0

Спасибо, но, что такое «stSavings, useDaylight, переходы и правила»? @Alexandre Lavoie – MaheshVarma

+0

@MaheshVarma теперь все ответит! –

+0

Спасибо @Alexandre Lavoie – MaheshVarma

1

Отметьте this question, чтобы узнать, как работает Locale.getDefault().

Как для выхода на System.out.println(java.util.TimeZone.getDefault());

  1. DST Экономия: Базовая реализация возвращает 3600000 (1 час) для часовых поясов, которые используют летнее время и 0 для часовых поясов, что сделать не
  2. Смещение: Это смещение вашего часового пояса по GMT. Для Индии это 5hr30min, что составляет 19800000 мс.
  3. UseDaylight: Это показывает, что нет регулировки дневного света для этот часовой пояс.
  4. Переходы. Это относится к переходам перехода на летнее время часового пояса.
  5. LastRule: возвращает объект SimpleTimeZone, представляющий последнее GMT ​​ график смещения и DST или null, если этот часовой пояс не соблюдается. DST.

Надеюсь, это поможет.

Смежные вопросы