Конвертировать float во время в Java? - PullRequest
3 голосов
/ 16 ноября 2011

Возможно ли преобразовать число с плавающей точкой во время в Java?

Я новичок в веб-службах и пытаюсь вызвать простой веб-сервис времени восхода / захода солнца,WSDL для этого здесь

Я передал службе широту (34.0888), долготу (-118.40612), день, месяц и год и получил значения обратно:

восход: 13.6935135 закат: 26.607845

Но значения являются числами с плавающей точкой, кто-нибудь знает, почему это так?Или можно ли у них отработать время?Я думал, что это может быть время Unix, но мне не очень повезло с этим.

Любая помощь приветствуется, спасибо

Ответы [ 4 ]

3 голосов
/ 16 ноября 2011

Не похоже на тривиальную вещь для вычисления ... здесь есть полный пакет для обработки: https://github.com/mikereedell/sunrisesunsetlib-java

3 голосов
/ 16 ноября 2011

Это, вероятно, количество часов относительно UTC.Я бы попробовал что-то вроде этого:

Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.add(Calendar.HOUR_OF_DAY, (int) sunrise);
calendar.set(Calendar.MINUTE, (sunrise * 60) % 60);
calendar.set(Calendar.SECOND, (sunrise * 3600) % 3600);

Затем отобразите дату в желаемом часовом поясе с помощью DateFormat:

DateFormat fmt = new SimpleDateFormat();
fmt.setTimeZone(TimeZone.getTimeZone("Europe/Paris")); 
System.out.println(fmt.format(calendar.getTime()));
1 голос
/ 16 ноября 2011

Кажется, это не проблема Java, и вы нашли веб-сервис с недостаточно указанным интерфейсом.Я нашел решение, и нашел несколько библиотек, способных вычислять восход и закат.Например, это был один из первых результатов: http://www.jstott.me.uk/jsuntimes/

1 голос
/ 16 ноября 2011
Float sunriseFloat = new Float(sunrise);  
Float sunsetFloat = new Float(sunset);

    Date startDate = new Date(sunriseFloat.longValue());  
    Date endDate = new Date(sunsetFloat.longValue());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...