Javascript 查询ISO格式问题中的日期

Javascript 查询ISO格式问题中的日期,javascript,node.js,angularjs,mongodb,Javascript,Node.js,Angularjs,Mongodb,我的集合中有“出生日期”字段,该字段以ISO格式保存数据,如下所示:- ISODate("1980-01-01T20:20:19.198Z") 01/01/1980 在我的html页面中,日期时间选择器在模型中为我提供如下日期:- ISODate("1980-01-01T20:20:19.198Z") 01/01/1980 当我查询出生日期时,它没有给我任何信息,因此我尝试:- dateofbirth = new Date(req.params.sdob); dateofbirthFor

我的集合中有“出生日期”字段,该字段以ISO格式保存数据,如下所示:-

ISODate("1980-01-01T20:20:19.198Z")
01/01/1980
在我的html页面中,日期时间选择器在模型中为我提供如下日期:-

ISODate("1980-01-01T20:20:19.198Z")
01/01/1980
当我查询出生日期时,它没有给我任何信息,因此我尝试:-

dateofbirth = new Date(req.params.sdob);
dateofbirthFormatted = dateofbirth.toISOString();

仍然没有给出任何结果。此问题的正确解决方案是什么?

手动将输入日期格式化为yyyy mm dd,然后搜索

只需使用momentjs格式化日期这是一个链接

您需要“yyy-mm-dd”中的“日期字符串”,以便获得与预期相同的ISO日期,因此有一个开始。如果您的“时间选择器”不能以这种方式生成数据,那么请操作控制器中的数据。假定“日/月/年”:

此外,由于您的“出生日期”更多地是一个“时间戳”值,并且与该日期不完全匹配,因此只需转换为具有开始和结束的日期范围,并使用“范围”运算符:

// Adding one day in date math or other method
var start_date = new Date(string.split("/").reverse().join("-"))
    end_date = new Date( start_date.valueOf() + ( 1000 * 60 * 60 * 24 ) );

db.collection.find({ "birthday": { "$gte": start_date, "$lt": end_date } })

基本上,使用
dateofbirth
变量(这是一个
Date
)在“birth”中查找可能范围为“1980-01-01:00:00.000Z”和“1980-01-01:23:59:59.999Z”的所有值,但要注意时区问题。