JavaScript日期,每月的最后一天解析问题

安德鲁·沃克

我看到了一些有关此的帖子,但没有任何经验教训。

我需要将某个日期时间戳发送到REST API,它的外观应如下所示:

2014-01-17 00:00:00.000

因此,我需要两个,一个用于当前月份的第一天,另一个用于当前月份的最后一天,所以是这样的:

2014-02-01 00:00:00.000

2014-02-28 00:00:00.000

我使用了以下代码:

var date = new Date(),
    y = date.getFullYear(),
    m = date.getMonth(),
    firstDay = new Date(y, m, 1),
    lastDay = new Date(y, m + 1, 0),
    querydate = '"_createdAt" : {"$gt" : "' +
        y + '-' + m + '-' + firstDay + ' 00:00:00.000" , "$lt" : "' +
        y + '-' + m + '-' + lastDay + ' 00:00:00.000"}';

但这是我通过浏览器上的开发人员模式获得的输出:

"_createdAt" : {"$gt" : "2014-1-Sat Feb 01 2014 00:00:00 GMT+0000 (GMT) 00:00:00.000" , "$lt" : "2014-1-Fri Feb 28 2014 00:00:00 GMT+0000 (GMT) 00:00:00.000"}}

如您所见,它为我提供了正确的年份,但是月份必须为两位数,并且对于最后一天和第一天,它都给出了完整的日期。

有什么想法可以解决这个问题吗?

Xotic750

看到与其他帖子相似的地方了吗?

Java脚本

function padLeft(arg) {
    if (arg < 10) {
        arg = '0' + arg;
    }

    return arg;
}

function myFormat(dateObject) {
    return [
        dateObject.getFullYear(),
        padLeft(dateObject.getMonth() + 1),
        padLeft(dateObject.getDate())
    ].join('-') + ' 00:00:00.000';
}

var date = new Date(),
    y = date.getFullYear(),
    m = date.getMonth(),
    firstDay = new Date(y, m, 1),
    lastDay = new Date(y, m + 1, 0),
    querydate = '"_createdAt" : {"$gt" : "' +
        myFormat(firstDay) + ' , "$lt" : "' +
        myFormat(lastDay) + '"}';

console.log(querydate);

输出

"_createdAt" : {"$gt" : "2014-02-01 00:00:00.000 , "$lt" : "2014-02-28 00:00:00.000"} 

jsFiddle上

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章