gpt4 book ai didi

Dart - 如何订购日期时间对象?

转载 作者:IT王子 更新时间:2023-10-29 07:07:40 26 4
gpt4 key购买 nike

使用 Flutter/Dart(新手)。我需要将用户结果存储在游戏中(分数、时间和名称)。我认为 GameResult 类是可行的方法吗?

然后我需要按日期/时间(从最新到最旧)对每个用户的结果进行排序以显示结果表。如何按日期时间值排序?

最佳答案

Dart DateTime类是 Comparable到其他DateTime对象,所以你可以使用 dateTime1.compareTo(dateTime2)比较两个时间点。

例子:

class Result implements Comparable<Result> {
final String name;
final int score;
final DateTime time;
Result(this.name, this.score, this.time);

int compareTo(Result other) {
int order = other.score.compareTo(score);
if (order == 0) order = time.compareTo(other.time);
return order;
}

String toString() => "Result($name, score: $score, time: $time)";
}

这将创建一个类,其中实例可以相互比较。顺序先倒序score (较高的分数在较低的分数之前)并且对于相同的分数,它将较早的结果排在较晚的结果之前。

Comparable.compareTo 如果接收者在顺序中的参数“之前”,方法被指定返回一个负数,如果它们具有相同的顺序则返回零,如果接收者在参数之后则返回一个正数。

整数也是可比较的,通过使用 other.score.compareTo(score)而不是相反,我们有效地切换了分数的顺序——整数默认为较低的值在较高的值之前)。

Result类与自身具有可比性,您可以对 List<Result> 进行排序正如:

var results = <Result>[
Result("Me", 0, DateTime.now().subtract(Duration(hours: 1))),
Result("Me again", 0, DateTime.now().subtract(Duration(hours: 2))),
Result("You", 1000000, DateTime.now().subtract(Duration(hours: 24))),
];
results.sort();
print(results.join("\n"));

这打印:

Result(You, score: 1000000, time: 2018-10-23 15:34:16.532)
Result(Me again, score: 0, time: 2018-10-24 13:34:16.532)
Result(Me, score: 0, time: 2018-10-24 14:34:16.531)

您以分数取胜。我之前的零分比后来的零分早。

关于Dart - 如何订购日期时间对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52967441/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com