我有以“ yyyy / MM / dd HH:mm:ss”之类的日期格式存储的数据字段。我想使用orderby按日期对数据进行排序,但是我该怎么做
我通过代码来做到这一点,但是要处理大量的代码需要很长时间
public void sortBy_Desc(String SortBy) {
int size = universityData.size();
int after;
for (int m = size; m >= 0; m--) {
for (int before = 0; before < size - 1; before++) {
after = before + 1;
long first = 0, second = 0;
if (SortBy.equals(Data.EXAM_DATE)) {
first = convertStringToDate(examData.get(before).getExam_date()).getTime();
second = convertStringToDate(examData.get(after).getExam_date()).getTime();
}
else if (SortBy.equals(Data.REG_DATE)) {
first = convertStringToDate(examData.get(before).getReg_end_date()).getTime();
second = convertStringToDate(examData.get(after).getReg_end_date()).getTime();
}
else if (SortBy.equals(Data.FEE)) {
String fee = getCurrencyType(examData.get(before).getExam_fee()).get(0);
first = Integer.parseInt(fee);
fee = getCurrencyType(examData.get(after).getExam_fee()).get(0);
second = Integer.parseInt(fee);
}
if (first < second) {
swapData(before, after);
}
}
}
}
正如道格·史蒂文森(Doug Stevenson)所提到的,您最好将日期存储为String。最好的选择是将日期转换为格林尼治标准时间1970年1月1日00:00:00以来的毫秒数
在Java中,这是通过这种方式完成的
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = sdf.parse(myDate);
long millisSinceEpoch = date.getTime();
或以下与Java 8
long millisSinceEpoch = LocalDateTime.parse(myDate, DateTimeFormatter.ofPattern("uuuu/MM/dd HH:mm:ss"))
.atOffset(ZoneOffset.UTC)
.toInstant()
.toEpochMilli();
这样就很容易订购。如果您想获得相反的顺序(例如,首先将最近的日期),则可以存储
0 - millisSinceEpoch
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句