Конвертировать часовой пояс API в секундах в часовой пояс GMT.Также преобразовать температуру API в градусы Цельсия - PullRequest
0 голосов
/ 19 сентября 2019

Я получаю данные о погоде API с какого-либо сайта о погоде.Он предоставил мне часовой пояс как 19800, который я хочу преобразовать в GMT + 05:30, но я не могу сделать то же самое.

Также он дал температуру как 297.58, которую я хочу преобразовать в градусы Цельсия.

Я попытался предположить, что заданная температура в градусах Кельвина и уменьшить ее на 273, но она не работает

Я хочу иметь возможность преобразовывать секунды в часовой пояс и показывать температуру в градусах Цельсия.

Ответы [ 2 ]

1 голос
/ 20 сентября 2019

Преобразование смещения с использованием java.time

Это просто, когда вы знаете, как:

    int offsetSeconds = 19_800;
    ZoneOffset offset = ZoneOffset.ofTotalSeconds(offsetSeconds);
    System.out.println("Offset is " + offset);

Вывод:

Смещение +05: 30

Далее вы можете использовать полученный объект ZoneOffset для преобразования даты и времени.Детали зависят от формата вашей даты и времени.

Преобразование температуры

Я согласен, что ваша температура очень похожа на градусы Кельвина.Если это так, формула, приведенная в другом ответе @Lt.Нулевое значение верно:

    double temperatureKelvin = 297.58;
    double temperatureCelsius = temperatureKelvin - 273.15;
    System.out.println("Temperature is " + temperatureCelsius + " degrees Celsius");

Температура 24,430000000000007 градусов Цельсия

Множество десятичных дробей взято из математики с плавающей запятой, чаще всего неточной .(Для точности используйте BigDecimal.) Для вывода пользователю может потребоваться вывести меньше десятичных знаков.Если это так, отформатируйте число, используя NumberFormat и / или DecimalFormat.

. Если 24,43 ° C не соответствует вашим ожиданиям, вам нужно как минимум сообщить нам, чего вы ожидали.

Вопрос: Могу ли я использовать java.time на Android?

Да, java.time прекрасно работает на старых и новых устройствах Android.Для этого требуется как минимум Java 6 .

  • В Java 8 и более поздних версиях и на более новых устройствах Android (начиная с уровня API 26) современный API поставляется встроенным.
  • В Java 6 и 7 получают ThreeTen Backport, бэкпорт современных классов (ThreeTen для JSR 310; см. Ссылки внизу).
  • На (более старых) Android используется версия ThreeTen для AndroidBackport.Это называется ThreeTenABP.И убедитесь, что вы импортируете классы даты и времени из org.threeten.bp с подпакетами.

Ссылки

0 голосов
/ 19 сентября 2019

Для преобразователя часового пояса используйте это

 long unix_seconds = 19800; 
       Date date = new Date(unix_seconds*1000L); 
       // format of the date 
       SimpleDateFormat formate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss z");
       formate.setTimeZone(TimeZone.getTimeZone("GMT+5:30"));
       String dateFinal = formate.format(date);
       System.out.println("\n"+dateFinal+"\n");

А для определения градуса Кельвина просто используйте 297,58K - 273,15 = 24,43 ° C

...