我无法提供任何示例代码,因此这将是一个更多的问题,您也许可以向我提供正确的方向。
本质上,在游戏回合结束时,我将分数导出到文本文件。我的文本文件看起来像
1
3
4
1
2
现在我想做的是,获取过去 24 小时内保存到文本文件中的前 5 个分数。
我的想法是,一旦我得到过去 24 小时保存的分数,我会将它们添加到集合中并对它们进行反向排序,然后使用 for 循环打印 5。但我不知道如何获得时间。
最佳答案
您是对的,您需要更改文件的格式。我想使用 Instant.toString()
或 LocalDateTime.toString()
来生成时间戳。所以每一行都会变成这样
5 2017-11-06T14:52:31.434Z
在示例中,5 是分数,2017-11-06T14:52:31.434Z 是Instant
。 Instant
和 LocalDateTime
的字符串表示形式都不包含任何空格,因此从文件中的空格处分割每一行,这样您就可以分别获得分数和时间戳。将时间戳反馈给 Instant.parse()
或 LocalDateTime.parse()
。
从头开始读取文件,跳过超过 24 小时的时间戳。一旦遇到小于 24 小时的分数,就开始将分数添加到您的 ArrayList
中。
要确定时间戳是否早于 24 小时,请将其与 Instant.now().minus(Duration.ofHours(24))
或 LocalDateTime.now(ZoneId. of("Europe/Rome")).minusHours(24)
(替换您想要的时区)。这些类具有用于比较的方法 isBefore
和 isAfter
。
仅当您确定所有事情仅发生在一个时区内时才使用 LocalDateTime
。 Instant
在不同时区都是安全的。
关于Java - 打印过去 24 小时内保存到文本文件的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47676456/