首页 > 解决方案 > 将字符串转换为日期时,将给定月份的第一天转换为上个月的最后一天

问题描述

将字符串转换为日期时,将给定月份的第一天转换为上个月的最后一天。例如,在这里我转换了 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) {}

感谢您的帮助

标签: javascriptdatetime

解决方案


那是因为当您将日期"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());


推荐阅读