如何在Node.js中获取当月的第一个日期?

时间:2015-12-09 10:13:17

标签: javascript node.js date

我试图使用Node.js获取当月的第一个和最后一个日期。

以下代码在浏览器(Chrome)中完美运行:

var date = new Date(), y = date.getFullYear(), m = date.getMonth();
var firstDay = new Date(y, m, 1);
var lastDay = new Date(y, m + 1, 0);

console.log(firstDay);
console.log(lastDay);

但它在Node.js中显示了不同的结果。我该如何解决?

4 个答案:

答案 0 :(得分:3)

在接受的答案中更改原生Date对象是不好的做法;不要这样做(https://stackoverflow.com/a/8859896/3929494

您应该使用moment.js为您提供一致的环境,以便在node.js和所有浏览器之间处理JavaScript中的日期 - 将其视为抽象层。 http://momentjs.com/ - 它非常易于使用。

这里有一个非常相似的例子:https://stackoverflow.com/a/26131085/3929494

您可以在https://tonicdev.com/jadaradix/momentjs

在线试用

答案 1 :(得分:0)

浏览器输出显示当前时区的日期,node.js显示日期GMT / Zulu时区。

(编辑:代码添加)。像这样的东西

var offset = (new Date().getTimezoneOffset() / 60) * -1;
var d = new Date();
var tmpDate = new Date(d.getTime()+offset);
var y = tmpDate.getFullYear();
var m = tmpDate.getMonth();
var firstDay = new Date(y, m, 1);
var lastDay = new Date(y, m + 1, 0);

console.log(tmpDate.toString());
console.log(firstDay.toString());
console.log(lastDay.toString());

答案 2 :(得分:0)

创建一个新文件 dates.js 并添加以下代码。要执行此代码,请在终端上运行命令 node date.js 。您可以使用此功能获取给定月份的第一天和最后几天的日期。我在节点12

上进行了测试
const getDays = () => {
    const date = new Date();
    const year = date.getFullYear();
    let month = date.getMonth() + 1;
    let f = new Date(year, month, 1).getDate();
    let l = new Date(year, month, 0).getDate();

    f = f < 10 ? '0'+f : f;
    l = l < 10 ? '0'+l : l;
    month = month < 10 ? '0'+month : month;
    const firstDay = new Date(`${year}-${month}-${f}`);
    const lastDay = new Date(`${year}-${month}-${l}`);

    console.log({
        "firstDay": firstDay,
        "lastDay": lastDay
    });

};

getDays();

答案 3 :(得分:-2)

查看代码

<html>
<head>
    <title>Please Rate if it helps</title>
    <script>
        Date.prototype.getMonthStartEnd = function (start) {
            var StartDate = new Date(this.getFullYear(), this.getMonth(), 1);
            var EndDate = new Date(this.getFullYear(), this.getMonth() + 1, 0);
            return [StartDate, EndDate];
        }
        window.onload = function () {
            document.write(new Date().getMonthStartEnd());
        }
    </script>
</head>
<body>
</body>
</html>