【问题标题】:Javascript Date, last day of the month parse issueJavascript日期,当月的最后一天解析问题
【发布时间】:2014-02-15 18:58:55
【问题描述】:

我看过一些关于这个的帖子,但我没有从中学到任何东西。

我需要将某个日期时间戳发送到 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"}}

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

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

【问题讨论】:

  • 我不想想想SO 上已经报道了多少次了 :)
  • @Xotic750 您发布的链接不是特别有用。
  • 你说得对,我应该为他做研究,然后给他一个答案。
  • @Xotic750 查看其他帖子,我没有看到我提出的要求。但是请随意发布一个链接来回答它!
  • 格式化日期的一个例子stackoverflow.com/questions/21516995/…

标签: javascript date date-formatting


【解决方案1】:

现在看到与其他帖子的相似之处了吗?

Javascript

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

【讨论】:

  • 是的,谢谢,但在我的辩护中,它只是标记为 Javascript,所以很难找到,而且我从未在任何搜索中看到它。但是再次感谢你:)
  • 我现在已将这些标签添加到该问题中,因此应该更容易找到该问题以及其他许多标签。 :)
【解决方案2】:

Moment.js

对于javascript中的日期时间,我更喜欢使用moment.js;一个用于显示和计算日期时间的小型库。

你想要做的应该是这样的:

moment("2014-05-15 22:15:01").format("YYYY-MM-DD HH:mm:ss") // "2014-05-15, 22:15:01"

【讨论】:

  • 这就是我需要的样子。但是我该如何在最后一天做到这一点。? lastDay = new Date(y, m + 1, 0),这给了我完整的日期,而不仅仅是日期数字?
【解决方案3】:
var date = new Date(), 
y = date.getFullYear(),
m = date.getMonth()  
var firstDay = new Date(y, m, 1).getDate() ;
var lastDay = new Date(y, m + 1, 0).getDate()
var querydate = '"_createdAt" : {"$gt" : "'+y+'-'+m+'-'+firstDay+' 00:00:00.000" , "$lt" : "'+y+'-'+m+'-'+lastDay+' 00:00:00.000"}';    

【讨论】:

  • 这是我从上面的代码"_createdAt" : {"$gt" : "2014-1-function getDate() { [native code] } 00:00:00.000" , "$lt" : "2014-1-function getDate() { [native code] } 00:00:00.000"}}得到的输出?
  • 我想你错过了一些东西..据我所知,我得到了 "_createdAt" : {"$gt" : "2014-1-1 00:00:00.000" , "$lt " : "2014-1-28 00:00:00.000"}
【解决方案4】:
    var getTimeStamp = function() {
    var tStamp;
    var cd = new Date();
     if ( (cd.getMonth() + 1) < 10 )
        var tStamp = ( cd.getFullYear() + "-0" + (cd.getMonth() + 1) + "-" + cd.getDate() + " 00:00:00.000");
    else
        var tStamp = ( cd.getFullYear() + "-" + (cd.getMonth() + 1) + "-" + cd.getDate() + " 00:00:00.000");
    return tStamp;
    }

【讨论】:

    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-10
    • 2013-03-26
    • 1970-01-01
    相关资源
    最近更新 更多