Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Firebase 如何按字段存储字符串作为日期格式对数据进行排序;yyyy/MM/dd HH:MM:ss“;_Firebase_Firebase Realtime Database - Fatal编程技术网

Firebase 如何按字段存储字符串作为日期格式对数据进行排序;yyyy/MM/dd HH:MM:ss“;

Firebase 如何按字段存储字符串作为日期格式对数据进行排序;yyyy/MM/dd HH:MM:ss“;,firebase,firebase-realtime-database,Firebase,Firebase Realtime Database,我有一个以日期格式存储的数据字段,如“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--) {

我有一个以日期格式存储的数据字段,如“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);
            }
        }
    }

}
public void sortBy_Desc(字符串sortBy){
int size=universityData.size();
int之后;
对于(int m=size;m>=0;m--){
for(int-before=0;before
正如道格·史蒂文森(Doug Stevenson)提到的,你最好将日期存储为字符串。最好的选择是将日期转换为自1970年1月1日00:00:00 GMT以来的毫秒数

在Java中,这是这样做的

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Date date = sdf.parse(myDate);
long millisSinceEpoch = date.getTime();
或者使用Java8执行以下操作

long millisSinceEpoch = LocalDateTime.parse(myDate, DateTimeFormatter.ofPattern("uuuu/MM/dd HH:mm:ss"))
        .atOffset(ZoneOffset.UTC)
        .toInstant()
        .toEpochMilli();
这样就很容易订购了。如果您想获得相反的顺序(即首先是最近的日期),您可以存储

0 - millisSinceEpoch

检查这个:最好将日期存储为数字而不是字符串。它们会更小,也更容易排序。仅供参考,像
java.util.date
java.util.Calendar
、和
java.text.simpleDataFormat
这样麻烦的旧日期时间类现在已经被这些类所取代。大部分java.time功能都在项目中向后移植到Java6和Java7。进一步适应项目中早期的Android。看见