在Java中将浮点转换为时间?

在Java中将浮点转换为时间?,java,web-services,time,floating-point,Java,Web Services,Time,Floating Point,在Java中是否可以将浮点转换为时间 我是web服务新手,我正在尝试调用一个简单的日出/日落时间web服务,其WSDL是 我已通过服务a纬度(34.0888)、经度(-118.40612)、日、月和年,并已返回值: 日出:13.6935135 日落:26.607845 但是这些值是浮动的,有人知道为什么会这样吗?或者是否有可能从他们那里算出时间?我想可能是unix时间了,但我运气不太好 非常感谢您提供的任何帮助。这似乎不是java的问题,您发现了一个具有未指定接口的Web服务。我在谷歌上搜索了一

在Java中是否可以将浮点转换为时间

我是web服务新手,我正在尝试调用一个简单的日出/日落时间web服务,其WSDL是

我已通过服务a纬度(34.0888)、经度(-118.40612)、日、月和年,并已返回值:

日出:13.6935135 日落:26.607845

但是这些值是浮动的,有人知道为什么会这样吗?或者是否有可能从他们那里算出时间?我想可能是unix时间了,但我运气不太好


非常感谢您提供的任何帮助。这似乎不是java的问题,您发现了一个具有未指定接口的Web服务。我在谷歌上搜索了一个解决方案,找到了几个能够计算日出和日落的库。例如,这是第一个结果之一:

这可能是相对于UTC的小时数。我想试试这样的东西:

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

    Date startDate = new Date(sunriseFloat.longValue());  
    Date endDate = new Date(sunsetFloat.longValue());
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()));

看起来不像是一件小事来计算。。。这里有一个完整的包来处理这个问题:

你确定这些不是双重的吗?根据WSDL,它们是浮动的,但是没有任何关于它们代表什么的文档。一旦你知道时间代表了什么,转换成时间就是向前的。Web服务返回浮动。我可以把它们赋给一个双变量,但我只得到13.093513488769531和26.607845306396484。这些结果很奇怪。你是哪一天、哪一个月、哪一年来的?如果你改变季节,会发生什么情况?你看到证据表明这些值遵循标准的季节模式吗?是的,我不知道它们代表什么,我希望有一种常见的方式将日期/时间表示为浮动不确定为什么向下投票问题是如何将浮动转换为时间。谢谢你的回答,我发现您的代码中有一个错误,因为我的sunrise值是float:cannotinvoke longValue()在基元类型上float@ostegg548更新。我甚至没有考虑过前后拳击。这段代码是否适用于unix时代?我的日期是1970年1月1日星期四。不过,我认为这不会返回unix时间,谢谢。我同意停止使用未指定的Web服务,并采用(本地)库来进行计算!那你为什么不试试helloWorld服务呢!?;-)好啊我想你选了个不好的!首先,我建议尝试亚马逊的web服务(或其他大公司的web服务)。通常它们都有很好的文档记录,您可以关注自己的错误(而不是对方的错误)。(或HelloWorld服务;-))谢谢,好的,它输出的是正确的日期,但时间已关闭。它总是准时出版,没有几分钟。我在加利福尼亚州得到了15:00的日出,上面的代码,在英国是08.00。