Получение неправильного вывода при развертывании на сервере: получение подробной информации о видео между двумя датами

#java #mongodb #date #video

#java #mongodb #Дата #Видео

Вопрос:

В моем проекте, который основан на spring с mongodb.Когда я пытаюсь получить видео любой конкретной даты (17-05-2014), я получаю все видео этой даты (17-05-2014) вместе с некоторым видео со следующей даты (18-05-2014), а когда я пытаюсь получить видео следующей даты (18-05-2014), то те видео, которые получены в предыдущую дату (17-05-2014), на этот раз не приходят. Код запроса является:

 SimpleDateFormat sdf = new SimpleDateFormat("ddMMyyyy");
Calendar c = Calendar.getInstance();
String frd="11082013"
c.setTime(sdf.parse(frd));
c.set(Calendar.HOUR, 0);
c.set(Calendar.MINUTE, 0);
c.set(Calendar.SECOND, 0);
    //getting the date in the above format with above hr,min and sec.
Date start = c.getTime();

String td= "11082013";
c.setTime(sdf.parse(td));
c.set(Calendar.HOUR, 23);
c.set(Calendar.MINUTE, 59);
c.set(Calendar.SECOND, 59);
Date end = c.getTime();

    //creating a query for fatch all video from mongodb on the basis of starting and      ending date
org.springframework.data.mongodb.core.query.Query query = new org.springframework.data.mongodb.core.query.Query().addCriteria(Criteria
        .where("creationTime.logtime").gte(start).lte(end));
    //sorting data on the basis of logtime in ascending order
    query.sort().on("creationTime.logtime", Order.ASCENDING);


    //Getting the Video data in the form of list on the basis of above query and sorting from video collection
    List<Video> videos  = mongoTemplate.find(query, Video.class, "video");
  

и структура mongodb выглядит следующим образом

 "_id" : ObjectId("xxxx"),
"_class" : "Video",
"videoid" : "2666210586001",
"title" : "Trial1",
"desc" : "",
"creationTime" : {
     "logtime" : ISODate("2013-09-12T08:39:07.227Z"),
     "logtimeStr" : "12-09-2013 02:09:07",
     "day" : 12,
     "month" : 9,
     "year" : 2013,
     "hour" : 14,
     "min" : 9,
     "second" : 7
},
"updatetime" : {
     "logtime" : ISODate("2013-09-12T08:39:07.227Z"),
     "logtimeStr" : "12-09-2013 02:09:07",
     "day" : 12,
     "month" : 9,
     "year" : 2013,
     "hour" : 14,
     "min" : 9,
     "second" : 7
},
 "userName" : "ABC",
 "userId" : "xxxx"
  

Эта проблема не создается на localhost (Windows) Но когда мы развертываем на сервере (Linux), возникает эта проблема

Если требуются дополнительные данные, пожалуйста, прокомментируйте

  **I scan the output report thoroughly and found that it gives report from 6 am of starting date and before 6 am of next day of ending date **
  

Ответ №1:

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

Простым подходом было бы сохранить даты с требуемой степенью детализации для сравнения, используя формат, который будет правильно сортировать, например, в виде строк с yyyy-mm-dd форматом.

Комментарии:

1. Спасибо за ваш ответ, но когда мы пытаемся сохранить формат даты как гггг-мм-дд, тогда это даже не работает на localhost, т. Е. запись не поступает.