以下是我嘗試過但無法獲得預期結果的程式,
void main() {
List data = ['Jan-21','Feb-21','Aug-21','Jan-22','Jun-21','Sept-22','Mar-21','Apr-22'];
data.sort((a,b){
return a.compareTo(b);
});
print(data.toString());
//output - [Apr-22, Aug-21, Feb-21, Jan-21, Jan-22, Jun-21, Mar-21, Sept-22]
//expected - [Jan-21, Feb-21, Mar-21, Aug-21, Jan-22, Apr-22, Jun-21, Sept-22]
}
我需要按照它們實際出現的順序對“月-年”資料串列進行排序,
對于這個串列 [Jan-21,Feb-21,Aug-21,Jan-22,Jun-21,Sept-22,Mar-21,Apr-22]
預期的輸出是 [Jan-21, Feb-21, Mar-21, Aug-21, Jan-22, Apr-22, Jun-21, Sept-22]
uj5u.com熱心網友回復:
您可以通過覆寫 sort 函式以按日期時間排序來直接排序。
DateFormat formatter = DateFormat("MMM-yy");
data.sort((a, b) => formatter.parse(a)
.compareTo(formatter.parse(b)));
uj5u.com熱心網友回復:
您必須轉換為日期并使用intl然后您可以對它們進行排序
注意:您已設定月份名稱長度以防止出現模式問題
君 => 嗯嗯
九月 => MMMM
void main() {
List data = [
'Jan-21',
'Feb-21',
'Aug-21',
'Jan-22',
'Jun-21',
// 'Sept-22', // you have set month name length same to prevent the pattern problem
'Mar-21',
'Apr-22'
];
data.sort((a, b) {
var formattedDateA = intl.DateFormat("MMM-yy").parse(a);
var formattedDateB = intl.DateFormat("MMM-yy").parse(b);
return formattedDateA.compareTo(formattedDateB);
});
print(data.toString());
//output - [Jan-21, Feb-21, Mar-21, Jun-21, Aug-21, Jan-22, Apr-22]
}
uj5u.com熱心網友回復:
List<String> getSortedDates(List<String> dates){
//Formatting for acceptable DateTime format
DateFormat formatter = DateFormat("MMM-yy");
//Mapping to convert into appropriate dateFormat
List<DateTime> _formattedDates = dates.map(formatter.parse).toList();
//Apply sort function on formatted dates
_formattedDates.sort();
//Mapping through sorted dates to return a List<String> with same formatting as passed List's elements
return _formattedDates.map(formatter.format).toList();
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/384905.html
