以ISO格式问题查询日期

时间:2014-07-11 10:53:13

标签: javascript node.js angularjs mongodb

我的收藏中有出生日期字段,以ISO格式保存数据: -

ISODate("1980-01-01T20:20:19.198Z")

在我的html页面中,日期时间选择器会在模型中显示日期: -

01/01/1980

当我查询出生日期时,它没有给我任何东西,所以我尝试了: -

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

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

2 个答案:

答案 0 :(得分:1)

你需要你的"日期字符串" in" yyyy-mm-dd"为了获得与您想要的相同的ISO日期,所以有一个开始。如果你的" timepicker"无法以这种方式生成然后操纵控制器中的数据。假设" dd / mm / yyyy":

var start_date = new Date(string.split("/").reverse().join("-"));

此外,因为您的出生日期"更像是一个"时间戳"值完全匹配该日期,然后只需转换为带有开始和结束的日期范围,并使用" range"操作符:

// 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 } })

基本上寻找"生日"中的所有价值观可能范围从" 1980-01-01:00:00:00.000Z"和" 1980-01-01:23:59:59.999Z"

答案 1 :(得分:0)

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

只需使用momentjs来形成日期,这就是链接moment js