从Java中的System.nanoTime()计算小时

时间:2018-12-17 08:38:31

标签: java gemfire

在gemfire上,我有一个ABC区域,在这个区域内有一个long类型的列/字段。 在此字段中,我将值设置为System.nanoTime()。 我想从该地区提取所有记录,该记录比24小时早。 我该怎么办?

目前,我正在尝试按以下方式进行查询,但无法正常工作。

select  regionTimestamp from /ABCRegion where (((((regionTimestamp-currentTimeStamp)/ 1000000000))/3600)>24)

任何帮助建议都必须得到赞赏。

1 个答案:

答案 0 :(得分:2)

注意:每当计算机重新启动时,都会重置System.nanoTime(),因此它不是存储在数据库中的好选择。这也意味着时间是每台机器的本地时间。

LocalDateTime.now()是一个纳秒分辨率的壁钟,它不会在重新启动时重置,并且更有可能在所有计算机上工作。


无论如何,您都可以重新排列并计算

long now = ...
long aDayAgo = now - 86_400_000_000_000L; // 24 hours.

search for ... where regionTimestamp > aDayAgo