2011-11-16 176 views
3

是否有可能将float转换为Java中的时间?在Java中将float转换为时间?

我新的Web服务,我试图调用一个简单的日出/日落时间web服务,这样做的WSDL是here

我通过服务纬度(34.0888),经度(-118.40612),日,月,年,我有值返回:

日出:13.6935135 日落:26.607845

但值的花车,没有人知道为什么会是什么?或者如果有可能从他们那里弄出一段时间?我认为这可能是unix时间,但我没有太多运气。

任何帮助表示赞赏,感谢

+1

你确定那些不是双打? – Woot4Moo

+0

根据WSDL,它们是浮动的,但没有任何文档来表示它们代表的内容。一旦你知道它们代表什么,转换为时间就会向前迈进 –

+0

web服务返回浮动。我可以将它们分配给一个双变量,但是我只得到13.093513488769531和26.607845306396484。 – ostegg548

回答

1
Float sunriseFloat = new Float(sunrise); 
Float sunsetFloat = new Float(sunset); 

    Date startDate = new Date(sunriseFloat.longValue()); 
    Date endDate = new Date(sunsetFloat.longValue()); 
+0

不知道为什么downvote的问题是你如何转换花车时间。 – Woot4Moo

+0

感谢您的回复,我的代码出现错误,因为我的日出值为float: 无法调用原始类型float – ostegg548

+0

@ ostegg548上的longValue()更新。甚至没有想过来回的拳击。 – Woot4Moo

1

看来这不是Java的问题,你发现一个尚未得以接口web服务。我搜索了一个解决方案,我发现了几个图书馆能够计算日出和日落。例如,这是第一个结果:http://www.jstott.me.uk/jsuntimes/

3

这可能是相对于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())); 
+0

对不起,我该怎么做? – ostegg548

+0

我用一个例子更新了答案 –

+0

谢谢,确定它输出正确的日期,但时间已关闭。它总是在没有分钟的时候出现。我用上面的代码在加利福尼亚州的日出时间是15:00,而在英国是08.00。 – ostegg548