重新格式化日期正则表达式

时间:2013-11-19 18:11:42

标签: javascript regex node.js mongoose

我正在用JavaScript编写应用程序(准确地说是Node.js),我目前在mongoose数据库中有一个这样格式化的日期字符串:

2013-11-19T00:10:00-08:00

我想通过查找在指定日期发生的所有结果来对数据库运行查询

它需要适用于所有日期,而不仅仅是上面的例子

3 个答案:

答案 0 :(得分:1)

编辑:OP改变了问题。

var start = new Date(2013,11,19);
var end = new Date (2013,11,20);
db.collection.find({dateTimeField: {$gte: start, $lt: end}});

感谢gilly3对OP突出显示的评论:http://cookbook.mongodb.org/patterns/date_range/


因为你使用猫鼬,所以我可能会遗漏一些东西......但是:

var dateTimeStr = '2013-11-19T00:10:00-08:00';
var dateTime = new Date(dateTimeStr);
var formatted = d.getFullYear()+'-'+(d.getMonth()+1)+'-'+d.getDate();

您拥有的日期时间值是标准ISO 8601,可由Date对象在内部进行分析。

我也不确定为什么你有一个日期时间戳作为字符串存储(或被提取)。 MongoDB能够存储Date对象。

有关格式化日期的详细信息,请参阅Where can I find documentation on formatting a date in JavaScript?

答案 1 :(得分:0)

如果您愿意,可以将Windows内部命令fordelimstokens一起使用。

答案 2 :(得分:0)

var dateTimeString = '2013-11-19T00:10:00-08:00';
// substring + indexOf solution
console.log("1)", dateTimeString.substring(0, dateTimeString.indexOf("T")));
// regex.match solution
console.log("2)", dateTimeString.match(/^\d{4}-\d{1,2}-\d{1,2}/)[0]);