【发布时间】:2022-11-15 05:14:51
【问题描述】:
我有 4 个具有以下数据的日期,但是当我对它们进行排序时,数据出现错误。
日期:
2h, 2m, 13s
5d, 3h, 49m, 42s
2h, 0m, 13s
12h, 32m, 13s
我正在尝试使用此公式使用 Date-fns parse 将它们转换为日期
convertStringToDate(value) {
if (value.match('M')) {
return dateFns.parse(value, "M'M', dd'd', HH'h', mm'm', ss's'", new Date())
}
else if (value.match('d')) {
return dateFns.parse(value, "dd'd', HH'h', mm'm', ss's'", new Date())
}
else if (value.match('h')) {
return dateFns.parse(value, "HH'h', mm'm', ss's'", new Date())
}
else if (value.match('m')) {
return dateFns.parse(value, "mm'm', ss's'", new Date())
}
else if (value.match('s')) {
return dateFns.parse(value, "ss's'", new Date())
}
}
然后对其进行排序
$.fn.dataTableExt.oSort["customDuration-desc"] = (a, b) => {
a = this.convertStringToDate(a);
b = this.convertStringToDate(b);
return new Date(a) - new Date(b);
};
结果出错了。 它显示为
5d, 3h, 49m, 42s
2h, 2m, 13s
2h, 0m, 13s
12h, 32m, 13s
代替
5d, 3h, 49m, 42s
12h, 32m, 13s
2h, 2m, 13s
2h, 0m, 13s
【问题讨论】:
-
什么是“解析”
-
日期 Fns.parse 函数
-
为什么你期望你已经指出的输出?它们按最早日期到最新日期排序(您的实际输出顺序不正确)。看起来您的意思是按持续时间的长度而不是按日期排序。
-
是的,我想按持续时间而不是按日期对它们进行排序。
-
然后您需要将它们全部转换为等效单位(秒?)并进行比较
标签: javascript jquery parsing date-fns