Это начальная проблема:
lastyear = new Date(calendar.get(Calendar.YEAR));
Это создает Date
объект с "временем в миллисекундах с начала эпохи Unix", равным году calendar
.То есть вы создаете Date
, что составляет 2017 миллисекунд после эпохи Unix: 1970-01-01T00: 00: 02.017Z, другими словами.Это объясняет ваше сообщение в журнале.
Если вы можете возможно избегать классов java.util.Date
и java.util.Calendar
, то это хорошая идея (вместо java.time
) ...но если у вас есть для их использования, вы хотите
lastyear = calendar.getTime();
Это способ получить Date
объект, соответствующий Calendar
объекту.
Однако, тогда вы все еще используете его в запросе, как это:
.whereEqualTo("OrderPlacedDateTime", lastyear)
Это будет искать документ с такой точной отметкой времени, что, вероятно, не то, что вы хотите.Если вы хотите получить все заказы в этом году, вы, вероятно, хотите найти год (например, 2017), затем создайте два значения Date
, одно из которых представляет начало 2017 года, а другое - начало 2018 года, и используйте:
.whereGreaterThanOrEqualTo("OrderPlacedDateTime", startInclusive)
.whereLessThan("OrderPlacedDateTime", endExclusive)