Intereting Posts
Возможно ли разместить один вид над другим в андроиде? Графический рисунок с 8-патчами Android не масштабируется в режиме просмотра изображений Как нарисовать TextView в растровое изображение (без рисования на экране) Как зарегистрировать тело запроса и ответа с помощью Retrofit-Android? Android NDK / JNI: создание общей библиотеки, которая зависит от других разделяемых библиотек Как сделать его единственным пейзажем для планшетов и только портрет для телефонов? Проверка InAppPurchase и отдельный сервер для логики игры Исключение: попытка получить ссылку на закрытие SQLiteClosable Службы Google Play устарели. Требуется 3025100, но найдено 2012110 Инициализация глобальных переменных до нуля на Android NDK Android: ошибка OutOfMemory и стоп-сигнал Как заставить выйти из приложения Android и перезапустить его? Android Broadcast Receiver vs Service Android Flip ImageView по вертикали Отправить тему по названию

Jodatime, как узнать, включен ли дневной свет

У меня есть API, которому нужен часовой пояс. Напр. Если я нахожусь в Калифорнии, мне нужно пройти -7 к ней, когда переход на летнее время (Калифорния, PDT – GMT-7) и -8, когда переход на летнее время отключен. Но я не могу определить способ узнать, включено ли в текущую дату, включено или выключено летнее время.

Date date1 = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(date1); double[] coords = db.getCoords(id1); double latitude = coords[0]; double longitude = coords[1]; double timezone = -7; /* For Pacific daylight time (GMT - 7)*/ ArrayList<String> Times = Class.foo(cal, latitude, longitude, timezone); 

Я установил JodaTime, и даже там я не могу найти способ. Пожалуйста, предложите, чтобы у родного java или jodatime есть способ сделать это.

Solutions Collecting From Web of "Jodatime, как узнать, включен ли дневной свет"

Когда вы создаете DateTime с JodaTime, вам не нужно передавать смещение. Вместо этого пропустите часовой пояс. Он позаботится о том, чтобы определить правильное смещение, включая рассмотрение DST.

 // First get a DateTimeZone using the zone name DateTimeZone zone = DateTimeZone.forID("America/Los_Angeles"); // Then get the current time in that zone. DateTime dt = new DateTime(zone); // Or if you prefer to be more explicit, this syntax is equivalent. DateTime dt = DateTime.now(zone); 

ОБНОВИТЬ

Я все еще не уверен, что вы спрашиваете, но, возможно, вы ищете один из них:

 // To get the current Pacific Time offset DateTimeZone zone = DateTimeZone.forID("America/Los_Angeles"); int currentOffsetMilliseconds = zone.getOffset(Instant.now()); int currentOffsetHours = currentOffsetMilliseconds / (60 * 60 * 1000); // To just determine if it is currently DST in Pacific Time or not. DateTimeZone zone = DateTimeZone.forID("America/Los_Angeles"); boolean isStandardOffset = zone.isStandardOffset(Instant.now()); boolean isDaylightOfset = !isStandardOffset;