javascript - 将字符串转换为日期时,将给定月份的第一天转换为上个月的最后一天
问题描述
将字符串转换为日期时,将给定月份的第一天转换为上个月的最后一天。例如,在这里我转换了 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) {}
感谢您的帮助
解决方案
那是因为当您将日期"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());
推荐阅读
- ruby-on-rails - 在相同的 2 个对象之间有 2 个不同的关联通常是不好的做法吗?
- algorithm - 算法 - 最小交换以调整矩阵
- python - 我正在使用 pygame 开发这款游戏,我正在尝试添加动画电源,但我遇到了麻烦
- ios - 在 Flutter VScode 中运行调试 ios 应用程序时出错
- python - 蟒蛇 | 我期待的情节没有出现
- c++ - CMake:OGREConfig.cmake
- python - 在 Chrome 中使用 Headless 模式效果不佳?
- mysql - 创建mysql表并加载数据
- python - Python argparser 可选 arg 需要其他参数
- mysql - MySQL:选择一个表的行具有相同的时间戳或最接近+小于另一个表中的时间戳