Java - 在过去24小时内打印保存到文本文件的数字

时间:2017-12-06 14:18:15

标签: java time

我无法提供任何示例代码,因此这可能是您可以向我提供正确方向的更多问题。

基本上,在游戏结束时,我将得分(分数)导出到文本文件。我的文本文件显示为

1
3
4
1
2

现在我要做的是,获取过去24小时内保存到文本文件的前5个分数。

我的想法是,一旦我获得了过去24小时内保存的分数,我会将这些分数添加到一个集合中并对它们进行反向排序并使用for循环打印出5个。但我不知道如何抽出时间。

1 个答案:

答案 0 :(得分:1)

您是正确的,您需要更改文件的格式。我想使用Instant.toString()LocalDateTime.toString()来生成时间戳。所以每一行都会变得像

5 2017-11-06T14:52:31.434Z

在示例中,5是得分,2017-11-06T14:52:31.434Z是InstantInstantLocalDateTime的字符串表示形式都不包含任何空格,因此在空格处分割文件中的每一行,并且分别得到分数和时间戳。将时间戳反馈回Instant.parse()LocalDateTime.parse()

从头开始阅读文件,跳过超过24小时的时间戳。一旦您遇到不到24小时的人,请开始将分数添加到ArrayList

要确定时间戳是否超过24小时,请将其与Instant.now().minus(Duration.ofHours(24))LocalDateTime.now(ZoneId.of("Europe/Rome")).minusHours(24)(替换您所需的时区)进行比较。这些类有方法isBeforeisAfter进行比较。

仅在您确定所有内容仅在一个时区内发生时才使用LocalDateTimeInstant跨时区是安全的。