在我的Angualar 14项目中,我从数据库中拉取一个数据并将其分配到列表中,我在该数据中有一个createDatetime列,当我将该数据保存到数据库中时,由于我同时保存了20个数据,因此仅在毫秒之间存在差异,因此我无法将其从小到大排序,如何将该数据从小到大排序?
shorted Code ; const sortedList = this.measurementTable.productionTableDetails.sort((a, b) => {
const dateA = new Date(a.createDateTime);
const dateB = new Date(b.createDateTime);
return Number(dateA) - Number(dateB);
});
dateFormat : "2023-02-15T17:00:44.0058977"
2条答案
按热度按时间y1aodyip1#
你的标准javascript Date对象精度不低于毫秒,所以你提供的微秒会被修剪,如果你想在js中使用带有微秒的日期,你可能想使用moment.js或luxon.js --也许他们能提供这样的功能,但我没有检查。
但是您的日期格式是符合ISO-8601的(即使它使用微秒而不是毫秒,它在技术上仍然是符合标准的,因为IIRC标准没有提供强制精度,只有指导方针)。
由于ISO-8601将所有单位按降序排序,并且所有值都使用降序,这意味着您可以安全地使用字典顺序进行排序。这意味着您可以简单地对字符串进行排序,它们将正确排序。
如果您只对排序感兴趣,那么您可以简单地执行以下操作:
kx7yvsdv2#
您需要将Date对象显式转换为数字。请尝试使用getTime()
如果对你有用就告诉我