我需要在不影响时间戳的情况下在react native中对一个数组进行排序。我正在从后端获取带有时间戳的详细信息,我想对它进行排序。我已经使用下面的代码按照先到先的原则完成了排序部分。
const members = out.game.gameMembers.map((elem) => {
return {
id: elem.userId._id,
profileImage: elem.userId.profileImage,
name: elem.userId.name,
status: elem.status,
position: elem.userId.position,
isDeleted: elem.userId.isDeleted,
createdAt: elem.createdAt,
updatedAt:elem.updatedAt
};
});
let sortedMembers = members.sort(function (x, y) {
// return x.updatedAt - y.updatedAt;
return new Date(x.updatedAt) - new Date(y.updatedAt);
});
这里我得到了排序后的成员,并根据他们的时间戳进行排序。但问题是时区。如果用户'A'来自迪拜,另一个用户'B'来自印度,时差大约是两个半小时。
例如,来自印度的用户在上午11:30更新了他们的配置文件状态,10分钟后,来自迪拜的用户更新了他的状态,时间是上午10:00。所以在排序时,来自迪拜的用户排在第一位,这是不可能发生的。如何准确地解决这个问题,并使用时间戳排序的细节先来先到的基础上。此外,我得到了迪拜用户和印度用户的时区。谢谢
2条答案
按热度按时间kx1ctssn1#
始终将
UTC
日期存储在数据库中,并在应用程序中使用时将其转换为本地日期,这样您将有更多的自定义权限ISO
最适合存储在数据库中ISO格式示例:
'2022-12-15T06:22:10.299Z'
如何获取ISO格式的日期?
然后把它们分类
ISO8601 See General principles 是为字典排序而设计的。因此,ISO8601字符串表示可以像任何其他字符串一样排序,这将给予预期的顺序。
因此,您将实施:
型
ndh0cuux2#
转换为UTC时区应起作用:
//本地时区的日期
//UTC时区中的日期
型