我无法提供任何示例代码,因此这可能是您可以向我提供正确方向的更多问题。
基本上,在游戏结束时,我将得分(分数)导出到文本文件。我的文本文件显示为
1
3
4
1
2
现在我要做的是,获取过去24小时内保存到文本文件的前5个分数。
我的想法是,一旦我获得了过去24小时内保存的分数,我会将这些分数添加到一个集合中并对它们进行反向排序并使用for循环打印出5个。但我不知道如何抽出时间。
答案 0 :(得分:1)
您是正确的,您需要更改文件的格式。我想使用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
跨时区是安全的。