簡單地說,我有一個不同日期和時間的字符串數組。每個元素是這種格式:排序日期和時間值
2015-08-27T22:24:31.903
即,YYYY-MM-DD Ť HH:MM:SS.MMM
我在整理它們。是否有可用於排序此格式的默認方法?
我現在正在做的是分割字符串T,將日期和時間轉換爲相應的時間戳,添加它們,然後對時間戳值進行排序。是否有可用的此格式的直接解析器?更好的解決方案是最受歡迎的。
簡單地說,我有一個不同日期和時間的字符串數組。每個元素是這種格式:排序日期和時間值
2015-08-27T22:24:31.903
即,YYYY-MM-DD Ť HH:MM:SS.MMM
我在整理它們。是否有可用於排序此格式的默認方法?
我現在正在做的是分割字符串T,將日期和時間轉換爲相應的時間戳,添加它們,然後對時間戳值進行排序。是否有可用的此格式的直接解析器?更好的解決方案是最受歡迎的。
我有一個字符串數組。每個元素都是這種格式:
2015-08-27T22:24:31.903
。是否有可用於排序此格式的默認方法?
是的。由於ISO字符串的日期字段按大小遞減,字段爲固定寬度,因此可以使用以下方式對字符串進行簡單排序:Arrays.sort(Object[] a)
:根據元素的自然排序,將指定的對象數組按升序排序。
是否有可用的此格式的直接解析器?
是的。 LocalDateTime.parse(CharSequence text)
:從文本字符串(如2007-12-03T10:15:30
)獲取LocalDateTime
的實例。
是這個程序可以用來排列這種格式的時間戳'2016-08-16T06:31:34Z' –
我認爲這些是字符串。如果你不想做明顯的事情(將它們轉換爲java.util.Date
或java.time.Instant
並比較結果),那麼可以將它們作爲字符串進行比較,即特定的日期時間格式(幾乎完整的ISO-8601時間戳,僅缺少時區指示符)在使用字符串比較時正常工作。
無償例子(live copy):
import java.util.*;
class Example
{
public static void main (String[] args)
{
String[] strings = {
"2002-10-24T13:51:25.417",
"2001-03-25T23:41:24.234",
"2008-10-05T04:41:56.004",
"2013-04-10T22:14:06.852",
"2005-08-24T05:05:01.080",
"2015-11-20T17:32:27.303",
"2003-07-16T06:32:07.703",
"2005-03-20T08:28:18.440",
"2009-04-17T13:20:09.499",
"2002-11-04T06:39:55.287"
};
Arrays.sort(strings);
for (String s : strings) {
System.out.println(s);
}
}
}
輸出:
2001-03-25T23:41:24.234 2002-10-24T13:51:25.417 2002-11-04T06:39:55.287 2003-07-16T06:32:07.703 2005-03-20T08:28:18.440 2005-08-24T05:05:01.080 2008-10-05T04:41:56.004 2009-04-17T13:20:09.499 2013-04-10T22:14:06.852 2015-11-20T17:32:27.303
你可以,當然,提供Comparator
如果你需要一個不同的排序(如反向順序)。
1)將給您使用適當的SimpleDateFormat字符串:
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-ddTHH:mm:ss.SSS");
try {
Date date = formatter.parse(dateInString);
} catch (ParseException e) {
e.printStackTrace();
}
2)存放在一個列表中的每個日期。要做到這一點,首先實例化一個新的列表...
ArrayList<Date> myDates = new ArrayList<Date>();
...解析命令後,每個日期添加到列表:
myDates.add(date);
3)對它們進行排序使用:
Collections.sort(myDates); // Ascending
或
Collections.sort(myDates, Collections.reverseOrder()); // Descending
不需要解析爲'日期',因爲字符串可以按原樣排序。 – Andreas
您可以簡單地對字符串進行排序,因爲它們處於[ISO-8601](https://en.wikipedia.org/wiki/ISO_8601#General_principles)格式,這使得它們可以輕鬆排序。不需要轉換。 – Jhonny007