Java Date to MongoDB插入和查找

时间:2017-03-10 17:07:26

标签: java mongodb date

我正在尝试插入并找到插入MongoDB的Date。我意识到MongoDB会在存储数据库时将日期转换为UTC。我正在使用Javafx日期选择器来挑选日期。

这是我将字符串转换为日期的功能

public static Date setTime(String strdate,int ch){
    int yr,mth,dt;
    yr=Integer.parseInt(strdate.substring(0,4));
    mth=Integer.parseInt((strdate.substring(5,7)));
    dt=Integer.parseInt(strdate.substring(8,10));
    Date date=new Date();
    if(ch==0) {
        date.setHours(0);
        date.setMinutes(0);
        date.setSeconds(0);
        date.setYear(yr - 1900);
        date.setMonth(mth - 1);
        date.setDate(dt);
    }
    else if(ch==1) {
        date.setHours(0);
        date.setMinutes(0);
        date.setSeconds(0);
        date.setYear(yr - 1900);
        date.setMonth(mth - 1);
        date.setDate(dt+1);
    }
    return date;
}

用于存储

Date newdate=new Date();
String picked_date=""+date.getValue(); //date is DatePicker object
newdate= MyDateTime.setTime(picked_date,0);
Document doc=new Document();
doc.append("date",newdate);
coll.insertOne(doc);

在这里,我正在使用过滤器检索

 String findDate=""+datePicker.getValue();
 Date startdate= MyDateTime.setTime(findDate,0);
 Date nextdate=MyDateTime.setTime(findDate,1);
 Bson filter=Filters.and(Filters.gte("date",startdate),Filters.lt("date",nextdate));
 List<Document> ls = new ArrayList<Document>();
 coll.find(filter).into(ls);
 for (Document doc : ls
            ) {
System.out.println(doc.getDate("date").toString());
 }

现在,问题是如果我从DatePicker中选择日期我会得到“2017-03-10” 现在,当我尝试使用“2017-03-9”查找日期时,将检索3月10日的记录,并且对于“2017-03-10”仍然检索到相同的记录。我仍然感到困惑,为什么要检索9和10日期的相同文件。

0 个答案:

没有答案