朋友我有一个包含日期记录的字符串
String date=10-Oct-2012 @12-Oct-2012 @$12-Oct-2012 @12-Oct-2012 @$12-Sept-2012 13:50@12-Oct-2012 13:50@$12-Feb-2012 13:50@12-Oct-2012 13:50@$
List<Date> myList=new ArrayList<Date>() ;
我需要比较日期10-Oct-2012,12-OCt-2012,12-Sept-2012,12-Feb-2012
,即每个奇怪的日期,以便我可以按时间顺序排列。我对此实施感到困惑,请提供指导/提示以解决问题。
在这种情况下,按时间顺序排列后的解决方案为12-Feb-2012 @12-Oct-2012 @12-Sept-2012 @12-Oct-2012 @$10-Oct-2012 @12-Oct-2012 @$12-Oct-2012 @12-Oct-2012
朋友们,为了解决这个问题,我创建了一个Hashmap,我计划将第一个日期保存为键,将整个String保存为值。
String[] tokens=date.split("\\$");
demo[0]=demo[0].replaceAll("-", ".");
if(tokens.length>0)
{
for(int iTmp=tokens.length-1;iTmp>=0;iTmp--)
{
String []demo = tokens[iTmp].split("\\@");
demo[0] = demo[0].replace("Jan", "1")
.replace("Feb", "2").replace("March","3").replace("April","4").replace("May","5").replace("Jun","6").replace("July","7").replace("Aug","8")
.replace("Sept","9").replace("Oct","10").replace("Nov","11").replace("Dec","12");
demo[0]=demo[0]+" 00:05:00";
Date date1 = null;
SimpleDateFormat formatter = new SimpleDateFormat("dd.MM.yy");
try {
date1 = (Date)formatter.parse(demo[0]);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
myList.add(date1);
System.out.println("ADDED DATE IS"+date1);
//System.out.println("KEY VALUE PAIRS "+key+" "+tokens[iTmp]);
}
}
System.out.println("READING LISTs");
for(int iTmp=0;iTmp<myList.size();iTmp++)
{
System.out.println(myList.get(iTmp));
}
Collections.sort(myList);
System.out.println("After Sorting");
for(int iTmp=0;iTmp<myList.size();iTmp++)
{
System.out.println(myList.get(iTmp));
System.out.println();
}
答案 0 :(得分:3)
对我来说听起来很简单:
Calendar
,Date
,Joda Time的LocalDate
)(使用Joda Time是IMO的首选选项,因为Calendar
和Date
都不能真正代表“只是一个日期”;您必须将所有值放在同一时区等。 )
我肯定不建议尝试将它们比作字符串。像往常一样,尽可能早地将数据转换为最适合的信息类型 - 并尽可能将其转换为序列化表示(例如存储,传播到Web服务等)。
答案 1 :(得分:0)
拆分字符串然后
您可以使用格里高利历(内置)
或者您可以使用yoda-time库
我不能多说关于排序
答案 2 :(得分:0)