我遇到问题,其中提交的日期字段是带时间戳的返回日期,而不是时间戳记设置为00:00:00
的日期。此代码适用于其他实例,我试图实现此过程,但出于某种原因,它不起作用,我很好奇,如果转换必须在我的视图中发生,或者应该发生在我的后端路线。带时间戳记MomentJS返回日期
路线:
.post(function(req, res){
models.Creator.findAll({
order: 'createDate DESC',
where: {
dataDateStart: {
$gte: moment(req.body.startDate).utc().format("YYYY-MM-DD")
},
dataDateEnd: {
$lte: moment(req.body.endDate).utc().format("YYYY-MM-DD")
}
},
include: [{
model: models.User,
where: {
organizationId: req.user.organizationId,
},
attributes: ['organizationId', 'userId']
}],
limit: 10
}).then(function() {
res.redirect('/app');
}).catch(function(error){
res.send(error);
})
});
输出where子句:
WHERE `creator`.`data_date_start` >= '2016-06-07 04:00:00' AND `creator`.`data_date_end` <= '2016-06-11 04:00:00' ORDER BY createDate DESC LIMIT 10;
正如你所看到的问题是,04:00:00
出现,而不是00:00:00
查看:
<div class="row">
<div class="creator-search-form col-md-6 col-md-offset-3">
<h1 id="search-header">Filter Feed</h1>
<form action="/app" method="post" class="creator-filter-fields">
<p>Date Range:</p>
<input type="date" name="startDate">
<input type="date" name="endDate">
<button type="submit" id="creator-filter-submit">Submit</button>
</form>
</div>
</div>
感谢您的评论,但您的解决方案提供了完全相同的输出,我已经得到。仍然没有生成日期字符串 – cphill
这不应该是这种情况。您可以在浏览器的控制台窗口中尝试它(假设存在moment.js库)。 moment.utc('2015-01-01 00:00:00')。格式(“YYYY-MM-DD”)== >>>“2015-01-01”。问题可能在其他地方。请console.log req.body.startDate和req.body.endDate。 – zubair1024
你说得对,我加了'console.log('Unformatted:'+ req.body.startDate); \t \t console.log('Formatted:'+ moment.utc(req.body.startDate).format(“YYYY-MM-DD”));'并接收'未格式化:2016-06-13 格式化:2016 -06-13'。这似乎表明它可能是Sequelize,我的ORM是追加'04:00:00'。你会同意吗? – cphill