我有一定的日期和时间值,如28-3-2012(日期) - 10:36:45(时间)。我希望将整个时间戳转换为纳秒,精度为纳秒。因为用户会输入如图所示的时间和日期,但在内部我必须精确到纳秒,并将整个事物转换为纳秒,以形成分配给在该特定时间创建的特定对象的唯一键。 有人可以帮我一样..
答案 0 :(得分:2)
采样日期的精度为秒,long
格式的表示形式为毫秒单位的值。您可以将其转换为纳秒单位,将其乘以1,000,000。
但实际上,它只会在原始日期值上附加九个零,而不会添加您需要创建哈希值的任何额外信息。 Date
对象没有“隐藏”的纳秒精度。
Java提供了方法System.nanoTime()
,它以纳秒为单位返回时间值。但是我们不能在不失去精度的情况下将它包装在Date
对象中。然而,在您的情况下,创建独特的“时间值”可能会有所帮助。
答案 1 :(得分:1)
如果你有Date对象:
long nanosecond = date.getTime() * 1000000;
或者您可以解析时间字符串,如果它看起来像(dd / MM / yyyy HH:mm:ss)
DateFormat df = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
Date date = df.parse(dateString);
long nanosecond = date.getTime() * 1000000;
答案 2 :(得分:0)
我认为最简单的方法是使用JDK对此的支持。试试以下
TimeUnit.NANOSECONDS.toNanos(持续时间)
此处单个参数持续时间将是您要转换为NanoSeconds的长值。
希望这有帮助。