我试图使用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中显示了不同的结果。我该如何解决?
答案 0 :(得分:3)
在接受的答案中更改原生Date
对象是不好的做法;不要这样做(https://stackoverflow.com/a/8859896/3929494)
您应该使用moment.js为您提供一致的环境,以便在node.js和所有浏览器之间处理JavaScript中的日期 - 将其视为抽象层。 http://momentjs.com/ - 它非常易于使用。
这里有一个非常相似的例子:https://stackoverflow.com/a/26131085/3929494
在线试用答案 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>