我正在尝试插入并找到插入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日期的相同文件。