如何在Node.js中获取当前月份的第一个date?

我试图使用Node.js获取当前月份的第一个和最后一个date

以下代码在浏览器(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中显示了不同的结果。 我该如何解决?

       

网上收集的解决方案 "如何在Node.js中获取当前月份的第一个date?"

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

您应该使用moment.js为您提供一个一致的环境来处理node.js和所有浏览器之间的JavaScriptdate – 将其视为抽象层。 http://momentjs.com/ – 使用起来相当简单。

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

你可以在https://tonicdev.com/jadaradix/momentjs上在线试试

浏览器输出显示当前时区中的date,node.js显示dateGMT / 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()); 

看代码

 <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>