简体   繁体   English

如何在 dart 中按最新对字符串列表进行排序

[英]How to sort String List by newest in dart

i have String List , per element contains userId+DateTime我有String List ,每个元素包含userId+DateTime

    List<String> = [
   '9DWXpF6V4vN8oxqvsHKnOBg2Rz2022-09-14 00:07:52.707',
   '8jk9wQ0U5gNyekzNz84SDb0jDTf12022-09-12 00:07:52.704',
   '0RMRZFCifmSe2CGW6k7Rvq8gvni2022-09-13 00:07:52.704'
    ] 

now i need to sort the list from newest to oldest depends of that DateTime next to User Id现在我需要根据User Id旁边的DateTime时间从最新到最旧对列表进行排序

so i am trying the output look like following所以我正在尝试 output 看起来像下面

  List<String> = [
   '9DWXpF6V4vN8oxqvsHKnOBg2Rz2022-09-14 00:07:52.707',
   '0RMRZFCifmSe2CGW6k7Rvq8gvni2022-09-13 00:07:52.704'
   '8jk9wQ0U5gNyekzNz84SDb0jDTf12022-09-12 00:07:52.704',
        ] 

Note: in my example i did care in day date just to explain my use case but i need to sort my list According to the most recent date and time , not only day date注意:在我的示例中,我确实关心日期只是为了解释我的用例,但我需要根据最近的日期和时间对列表进行排序,而不仅仅是日期

How can i implement this?我该如何实施?

Try this:尝试这个:

RegExp regex = RegExp(r'\d{4}-\d{2}-\d{2}\s+\d{2}:\d{2}:\d{2}\.\d+$');
list.sort(
  (first, second) {
    String? firstDateString = regex.firstMatch(first)?.group(0);
    if (firstDateString == null) {
      throw ArgumentError("$firstDateString does not contain any date");
    }
    String? secondDateString = regex.firstMatch(second)?.group(0);
    if (secondDateString == null) {
      throw ArgumentError("$secondDateString does not contain any date");
    }
    DateTime firstDate = DateTime.parse(firstDateString);
    DateTime secondDate = DateTime.parse(secondDateString);
    return secondDate.compareTo(firstDate);
  }
);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM