Вот так выглядит мой код

cropref.child(mycrop.name).push({
                          cropname:mycrop.name,
                          croplocation:mycrop.location,
                          cropplantdate:mycrop.plantdate.toString(),
                          cropharvestdate:mycrop.harvestdate.toString(),         
                  })

mycrop.harvestdate и mycrop.plantdate - оба ввода даты из моего html

<input type="date" ng-model='mycrop.harvestdate'>

<input type="date" ng-model='mycrop.harvestdate'>

Чтобы иметь возможность поместить данные в мою базу данных Firebase, мне нужно сначала преобразовать их в строку

cropplantdate:mycrop.plantdate.toString(),      

Но данные в моей базе данных Firebase включают время и часовой пояс

Образец данных

Sat Dec 12 2020 00:00:00 GMT+0800 (Malay Peninsula Standard Time)

Поэтому, как только я вызываю данные из своей базы данных, я не могу их фильтровать, поскольку это уже не дата, а строка. Как мне решить эту проблему, чтобы я мог фильтровать дату (которая преобразуется в строку), хранящуюся в моей базе данных

0
Nevin 27 Ноя 2016 в 16:11

2 ответа

Лучший ответ

Два варианта

1) Сохраните дату в более общем, но удобочитаемом формате, так что прямо сейчас будет воскресенье 27 ноября в 09:13:38.

20161127091338

2) Сохраните дату как метку времени unix (в миллисекундах), используя

(new Date).getTime() / 1000

Существует множество вариантов №2, поэтому изучите, какой из них лучше всего подходит для вашего варианта использования.

Вы можете сохранить любой ответ в виде строки, но №1 будет легче найти, так как запросы не потребуют каких-либо преобразований - чтобы увидеть сегодняшние события

queryStartingAt("20161127") and queryEndingAt("20161127")
3
Jay 27 Ноя 2016 в 14:23

Сначала вам нужно преобразовать дату в свой формат. Для этого вы можете использовать SimpleDateFormatFormat.

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

Теперь вы можете легко отформатировать дату в этом формате.

String mynewdate = sdf.format(mycrop.plantdate.getTime());

Результатом на сегодня будет:

2016-11-27

Конечно, вы можете вернуться к календарю. Я так делаю:

 public static Calendar fromStringtoCalendar(String datestring){
    int year =  Integer.valueOf(datestring.substring(0, 4));
    int month =  Integer.valueOf(datestring.substring(5, 7)) -1;
    int day =  Integer.valueOf(datestring.substring(8, 10));
    Calendar calendar = Calendar.getInstance();
    calendar.set(year, month, day);
    return calendar;
}
0
Hhorn 27 Ноя 2016 в 15:02