将字符串转换为日期时,给定月份的第一天将转换为上个月的最后一天

时间:2019-11-11 22:02:48

标签: javascript datetime

将字符串转换为日期时,给定月份的第一天将转换为上个月的最后一天。例如,这里我要转换10月的第一天,但​​要转换成9月的最后一天。

const fyStr = +this.fiscalYear - 1 + '-10-01';       //fyStr = "2019-10-01"
const startDate = new Date(fyStr);                   //startDate = Mon Sep 30 2019 20:00:00 GMT-0400 (Eastern Daylight Time) {}

我将日期更改为 11月的第一天,现在是 10月的最后一天

const fyStr = +this.fiscalYear - 1 + '-11-01';       //fyStr = "2019-11-01"
const startDate = new Date(fyStr);                   //startDate = Mon Oct 31 2019 20:00:00 GMT-0400 (Eastern Daylight Time) {}

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

那是因为当您将日期"2019-10-01"赋予新的Date()时。函数以这种方式"2019-10-01 00:00:00 GMT"进行读取,然后继续将其转换为您的时区GMT-4,即"2019-09-30 20:00:00 GMT-4"

因此,您有两种解决方案,即在输入中指定时区。

或者由于输出在我们的时区,您可以将其转换为UTC / GMT:

var dt = new Date('2019-10-01');

console.log(dt.toUTCString());