Преобразование смещения с использованием 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
с подпакетами.
Ссылки